我的HTML中有一个“ ng-init ”指令,用于在我的Angular.js数据模型中初始化“ data.id ”的值。让我们说现在我无法改变其运作方式。
现在,我想在页面加载后立即发出HTTP请求,其中URL将取决于此data.id值。到目前为止,以下似乎有效:
app.controller('MainCtrl', function ($scope, $http, $timeout) {
"use strict";
$scope.data = {};
$timeout(function () {
$http.get("/api/Something?id=" + $scope.data.id);
}, 0);
});
但是,使用超时为零的计时器似乎很笨拙。 (如果我省略$ timeout代码并直接调用$ http.get,那么$ scope.data.id当然是未定义的)。
在发出$ http请求之前,有没有更好的方法等待ng-init执行?以上基于超时的代码是否适用于所有情况/所有浏览器等?
答案 0 :(得分:5)
您可以尝试使用手表
$scope.$watch('data.id',function(newValue,oldValue) {
if(newValue) {
$http.get("/api/Something?id=" + $scope.data.id);
}
});