我正在构建一个相当大的应用程序,并希望确保我做对了。
第一只手表是空的,如预期的那样。
但是当http调用完成时,watch不会再次触发。
但是,由于使用ng-repeat,因此http调用中的品牌属于范围内。
我宁愿不使用$ broadcast,因为我觉得它使使用$ watch的某些指令变得复杂了。
继承人:http://plnkr.co/edit/L1SNV7mt6x7XCF4QFDPk?p=preview
var app = angular.module('app', []);
app.controller('main', function($scope, $http, Brand) {
$scope.brands = Brand.all;
$scope.$watch('brands', function(old, neww) {
console.log('brands', old, neww);
});
});
app.factory('Brand', function($http) {
var brands = {
all: [],
add: function(item) {
brands.all.push(item);
},
get: function() {
brands.all = [];
$http.get('json.txt').success(function(data) {
_.each(data, function(brand){
brands.add(Model(brand));
});
});
}
};
var Model = function(item) {
return item;
};
brands.get();
return brands;
});
最佳答案
尝试将$watch
中的3d参数设置为true
:
$scope.$watch('brands', function(old, neww) {
console.log('brands', old, neww);
}, true);
观看更深时会说成角度。
Docs