Я не могу передать дочернюю переменную $ scope, унаследованную от родительского контроллера, в фабричную функцию - PullRequest
0 голосов
/ 30 августа 2018

У меня есть определение состояния 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) на фабрике, значение Сег был не определен. Вам не разрешено передавать унаследованное значение переменной области в дочернем контроллере фабрике?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...