我是Angular的新手,但我不明白为什么控制器仅在某些情况下更新来自服务的数据... http://plnkr.co/edit/pV8m11Bc1vItDSmQKECS?p=preview object1和2已正确更新,但objet3未正确更新。 似乎Service.get3()只被触发一次。 我理解Angular监视对象的变化,对于object1和object2(对object1的引用)很好,顺便说一句,它很棒。 但它没有使用object3 ......好吧,它不是一个参考... 问题是:如何在服务中构建新对象?
谢谢你, 菲利普
var app = angular.module('App', []);
app.factory('Service', [
function() {
var object1 = ["TOTO"];
return {
get1: function() {
return object1;
},
get2: function() {
var object2 = object1;
return object2;
},
get3: function() {
var object3 = [];
/*
object1.forEach(function(entry) {
object3.push(entry);
console.log(entry);
});
*/
for (i = 0; i < object1.length; i++) {
object3.push(object1[i]);
}
return object3;
},
set: function(newValue) {
object1.push(newValue);
}
}
}
]);
app.controller('Controller', ['$rootScope', '$scope', 'Service',
function($rootScope, $scope, Service) {
$scope.object1 = Service.get1();
$scope.object2 = Service.get2();
$scope.object3 = Service.get3();
$scope.set = function() {
Service.set("TITI");
}
}
]);
答案 0 :(得分:1)
如上所述,第三个对象是一个不同的数组。为了让它通知您的控制器更改,您可能希望在其上注册一个手表:
http://plnkr.co/edit/EdXVKqe5eaZgROFDG9U9?p=preview
$scope.$watch(Service.get3, function(val) {
$scope.object3 = Service.get3();
});
答案 1 :(得分:0)
前两个绑定到object1。第三个完全绑定到不同的数组。