2015-12-11 4 views
0

У меня есть служба $ обедов в контроллере, и я хочу вызвать эти службы во время запуска приложения.angularjs вызывает функции контроллера при загрузке приложения

CustomerService.fetchReligion.list().$promise.then(function(response){ 
     $scope.religionList = response; 
     $window.localStorage.setItem('religionList', JSON.stringify(response));              
    }, function(error) { 
     // error handler 
    });  
    CustomerService.fetchCaste.list().$promise.then(function(response){ 
    $scope.casteList = response; 
    $window.localStorage.setItem('casteList', JSON.stringify(response));                    
    }, function(error) { 
    // error handler 
    }); 

Как я могу назвать эти услуги?

+1

Звучит как [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Можете ли вы поделиться тем, что вы пытаетесь выполнить, и кодом, который вы пробовали? –

+0

Я сохраняю возвращаемые значения JSON в локальном хранилище для последующего использования. – vishnu

+0

Вы можете использовать 'ng-init =" yourControllerFn() "' для выполнения функции. –

ответ

0

Один из способов сделать это с помощью UI-Router. UI-Router имеет "Resolve" functionality, в котором, когда представление изменяется в конкретное состояние, обещания должны быть разрешены и внесены в значение до того, как будет создан экземпляр соответствующего контроллера. Это означает, что всякий раз, когда загружается новое состояние/представление (и его контроллер), обеспечивается, что требуемые объекты/значения уже получены и готовы к использованию.

Следующий фрагмент взяты непосредственно из документации UI-Router.

$stateProvider.state('myState', { 
    resolve:{ 

    ... 

    // Example using function with returned promise. 
    // This is the typical use case of resolve. 
    // You need to inject any services that you are 
    // using, e.g. $http in this example 
    promiseObj: function($http){ 
     // $http returns a promise for the url data 
     return $http({method: 'GET', url: '/someUrl'}); 
    }, 

    // Another promise example. If you need to do some 
    // processing of the result, use .then, and your 
    // promise is chained in for free. This is another 
    // typical use case of resolve. 
    promiseObj2: function($http){ 
     return $http({method: 'GET', url: '/someUrl'}) 
      .then (function (data) { 
       return doSomeStuffFirst(data); 
      }); 
    },   

    ... 

    // The controller waits for every one of the above items to be 
    // completely resolved before instantiation. For example, the 
    // controller will not instantiate until promiseObj's promise has 
    // been resolved. Then those objects are injected into the controller 
    // and available for use. 
    controller: function($scope, simpleObj, promiseObj, promiseObj2, translations, translations2, greeting){ 

     ... 

     // You can be sure that promiseObj is ready to use! 
     $scope.items = promiseObj.data.items; 
     $scope.items = promiseObj2.items; 

     ... 
    } 
})