在数据加载之前,ng-change函数会在页面加载时运行吗?

时间:2015-05-14 01:08:30

标签: angularjs angularjs-service

我的一个控制器函数在我的数据加载之前运行。

html:

<div ng-show="item.name">
    <input ng-change="doChange()" ng-model="item.name">
</div>

我的控制器:

$scope.item = { name: 'bob' };
$scope.other = {};

$scope.doChange = function() {
    $scope.item = $scope.other['test'].name
}

// load the data now!
MyService.getData().success(function(newdata) {
    $scope.item = newdata.item;
    $scope.other = newdata.other;
});

我的服务:

app.factory("MyService", function($http) {
    return {
        getData: function() {
            return $http.get("/data");
        }
    }
});

这导致

TypeError: Cannot read property 'name' of undefined

因为doChange()在服务加载数据之前执行。我不确定为什么会这样。不应该doChange仅在输入发生变化时运行,而是在页面加载时运行。

2 个答案:

答案 0 :(得分:0)

更改

$scope.doChange() {
  $scope.item = $scope.other['test'].name
}

$scope.doChange = function() {
  $scope.item = $scope.other['test'].name
}

答案 1 :(得分:0)

很抱歉,在我更改的代码item.name的其他地方,结果证明它是在页面加载时启动的。

我原以为ng-modelng-change上以某种方式触发了<input>,但这只是我的愚蠢。