У меня есть определение состояния process_master.detail.new_detail, в котором есть контроллер для вкладки начальной загрузки. Это дочерний контроллер process_master_detail_ctrl.
$stateProvider.state('process_master',
{
url: '/:lab/process_master',
templateUrl: 'partial/process_master/process_master.html',
controller: 'process_master_ctrl'
}).state('process_master.detail',
{
url: '/:seg/:mat/:sub_entity',
views:
{
detail:
{
templateUrl: 'partial/process_master/process_master_detail.html',
controller: 'process_master_detail_ctrl',
resolve:
{
lm_pm_factory: 'lm_pm_factory',
lm_pm_record: function(lm_pm_factory, $stateParams)
{
var seg = $stateParams.seg;
var mat = $stateParams.mat;
var sub_entity = $stateParams.sub_entity;
if (seg == 'add' || mat == 'add' || sub_entity == 'add' )
{
return ({data: {data: ''}});
}
return lm_pm_factory.getone(seg, mat, sub_entity);
}
}
}
}
}).state('process_master.detail.new_detail',
{
url: '/new_detail',
templateUrl: 'partial/process_master/process_master_new_detail.html',
controller: 'process_master_new_detail_ctrl',
})
Для разрешенной записи lm_pm в родительском контроллере установлена переменная области действия:
$scope.lm_pm = lm_pm_record;
На фабрике lm_pm_factory у меня есть универсальный создатель источника данных, который извлекает данные в формате json и возвращает источник данных в зависимости от того, какой URL-адрес передан:
// Get the data and return the data source object
f.get_data_source = function(url)
{
var dataSource = new kendo.data.DataSource({
transport: {
read: {
url: url,
type: "put",
dataType: "json"
}
}
});
return dataSource;
};
Я вызываю это из других функций на фабрике, которые передают разные URL, такие как:
f.get_bc_data_source = function ()
{
return f.get_data_source(domain_factory.getDomain(':8080') + '/api/get_bc_data_source');
};
Все шло хорошо, пока мне не пришлось использовать параметр. Я пытался вызвать функцию на заводе с параметром seg, например:
f.get_sc_data_source = function (seg)
{
return f.get_data_source(domain_factory.getDomain(':8080') + '/api/get_bc_data_source', seg);
};
Мне не удалось получить вызов от дочернего контроллера (process_master_new_detail_ctrl) для отправки значения контекста на фабрику:
$scope.sc_data_source = lm_pm_factory.get_sc_data_source($scope.lm_pm.seg);
Если я сделал console.log ($ scope.lm_pm.seg) в дочернем контроллере, он отобразил значение seg просто отлично, но если я сделал console.log (seg) на фабрике, значение Сег был не определен. Вам не разрешено передавать унаследованное значение переменной области в дочернем контроллере фабрике?