这是我的控制器
//init
var init = function () {
$scope.getAlbumList();
};
$scope.getAlbumList = function () {
AlbumService.getAlbumList()
.then(function (data) {
$scope.albumList = data;
});
};
$scope.viewAlbum = function () {
AlbumService.getAlbum()
.then(function (data) {
$scope.album = data;
$location.path("/album");
});
};
init();
这是我的routeProvider
when('/albums', {
templateUrl: 'WebApp/albums.html',
controller: 'AlbumController'
}).
when('/album', {
templateUrl: 'WebApp/albumview.html',
controller: 'AlbumController'
}).
所以AlbumController处理相册和albumview页面。
创建控制器后,将调用init
函数,该函数将调用getAlbumList
函数。
问题是当用户点击相册转到其相册视图页面时,会再次创建控制器。这最终再次执行init函数,这反过来导致对getAlbumList的不期望的第二次调用。
基本上,我需要在为' / albums'创建控制器时调用getAlbumList。但不是' / albumview'。
我怎样才能做到这一点?
显然,我可以通过为/albumview
创建第二个控制器来解决这个问题,但这似乎是不必要的,我宁愿在一个控制器中拥有关于相册的所有内容。
答案 0 :(得分:2)
你有2个解决方案:
ng-init="getAlbumList()"
答案 1 :(得分:1)
最快的选择可能是检查路径,看看你是否在专辑或专辑中。以下是如何执行此操作的示例代码:
if ($location.url().toLowerCase() === '/albums') {
// call to getAlbumList here
}
答案 2 :(得分:0)
如果您在路由器中有controller: 'AlbumController'
且您的html有ng-controller = "AlbumController"
,则会发生这种情况。只使用一个以避免双重启动。