Один из способов сделать это с помощью 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;
...
}
})
Звучит как [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Можете ли вы поделиться тем, что вы пытаетесь выполнить, и кодом, который вы пробовали? –
Я сохраняю возвращаемые значения JSON в локальном хранилище для последующего использования. – vishnu
Вы можете использовать 'ng-init =" yourControllerFn() "' для выполнения функции. –