ng-change 函数在数据加载之前在页面加载时获得 运行?

ng-change function gets run on page load before data loads?

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

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 仅 运行,但它在页面加载时变得 运行。

改变

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

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

抱歉,我更改了代码的其他地方 item.name 这就是它在页面加载时启动的原因。

我以为 ng-model 以某种方式在 <input> 上触发了 ng-change,但我只是在犯傻。