我的一个控制器函数在我的数据加载之前运行。
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
仅在输入发生变化时运行,而是在页面加载时运行。
答案 0 :(得分:0)
更改
$scope.doChange() {
$scope.item = $scope.other['test'].name
}
到
$scope.doChange = function() {
$scope.item = $scope.other['test'].name
}
答案 1 :(得分:0)
很抱歉,在我更改的代码item.name
的其他地方,结果证明它是在页面加载时启动的。
我原以为ng-model
在ng-change
上以某种方式触发了<input>
,但这只是我的愚蠢。