【发布时间】:2015-12-21 15:47:52
【问题描述】:
我已根据我的观察修改了我的问题。$http 每当视图被调用第二次或第三次左右时,服务器端的请求都不会发生,尽管initWishList (ng-init ) 被调用。场景如下:
我在导航栏中有一个我的帐户标签,它会打开一个视图,其中包含我的愿望清单、我的地址等选项。当第一次点击我的愿望清单时时间,$http 请求发生,但是当我再次点击 My Account 时(这次我在加载 .html 视图时在服务器端看不到任何调用),然后如果我点击My Wishlist ,控制器被调用但 $http 未被调用(这次我再次没有看到来自$http 的服务器端的任何调用)但我可以看到警报 Init Called
为什么会这样?
$scope.initWishList = function(){
alert('Init called')
$http.get("/get_wish_list/")
.success(function (response) {
$scope.refreshWishList(JSON.parse(response["products_json"]));
})
.error(function(){
console.log('Error');
});
};
希望我已经正确解释了这个场景。
【问题讨论】:
-
ng-init 不应使用。为什么你不在作用域控制器中初始化一个变量并在之后更新它?
-
@AlainIb 嗯,但是为什么再次点击视图时它没有被调用?
-
你能展示你的场景的 HTML 吗?
ng-init每次它所附加的元素被 Angular 渲染和编译时都会被执行,因此无论模板是从服务器还是从缓存中检索。 -
@tasseKATT:我已经更新了我的问题。现在看看
-
打开 Chrome DevTools 的网络标签,然后调用
initWishList两次。您应该能够查看是否从缓存中检索了第二个调用。
标签: angularjs angularjs-ng-init ng-controller