gpt4 book ai didi

javascript - $watch 不与数据模型工厂一起工作

转载 作者:行者123 更新时间:2023-11-30 10:18:37 25 4
gpt4 key购买 nike

我正在构建一个相当大的应用程序,我想确保我做对了。

第一个 watch 如预期的那样是空的。

但是当 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);

看得更深会说有棱有 Angular 。 Docs

关于javascript - $watch 不与数据模型工厂一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22516751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com