【发布时间】:2016-02-01 14:26:08
【问题描述】:
我的 Angular 应用程序在 /home 状态下启动(我使用 ui-router),它有自己的控制器,在其中我调用工厂方法从我的 API 中获取一些 json 对象,这要归功于我之间的这个工厂整个应用程序。我将由此获得的列表放入 /home 状态的 $scope 对象中。
我要做的是只调用一次工厂的这个init方法,更好的是/home控制器只调用一次。
实际上,当我进入另一个状态,如 /about,当我回到 /home 时,再次调用 /home 控制器,工厂的 init 方法也是如此。那么如何保持初始视图状态呢?
StuffFactory.js:
app.factory('StuffFactory', function ($window, $http, $q) {
var stuffs;
return {
initStuffsList: function () {
return $http.get('http://myapi/stuff/init')
.then(function (response) {
stuffs = (angular.fromJson(response.data.result));
});
},
getStuffs: function () {
return stuffs;
}
};
});
homeController.js:
app.controller('homeCtrl', function ($scope,StuffFactory) {
StuffFactory.initStuffsList().then(function(){
$scope.stuffs = StuffFactory.getStuffs();
});
});
app.js:
.config(['$stateProvider', '$urlRouterProvider']
$urlRouterProvider.otherwise('/home');
$stateProvider
.state('home', {
url: '/home',
templateUrl: './partials/home.html',
controller:homeCtrl
})
.state('about', {
url: '/about',
templateUrl: './partials/about.html',
controller:aboutCtrl
})
【问题讨论】:
标签: javascript angularjs routes angular-ui-router