Одна из моих функций контроллера запускается до загрузки моих данных.
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
не должен запускаться только при изменении ввода, но при этом он запускается при загрузке страницы.