gpt4 book ai didi

javascript - AngularJS Controller 不从服务更新模型

转载 作者:行者123 更新时间:2023-12-03 12:24:39 24 4
gpt4 key购买 nike

我是 Angular 新手,但我不明白为什么 Controller 仅在某些情况下从服务更新数据...... http://plnkr.co/edit/pV8m11Bc1vItDSmQKECS?p=previewobject1 和 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");
}
}
]);

最佳答案

如上所述,第三个对象是一个不同的数组。为了让它通知您的 Controller 更改,您可能需要在其上注册一个 watch :

http://plnkr.co/edit/EdXVKqe5eaZgROFDG9U9?p=preview

$scope.$watch(Service.get3, function(val) {
$scope.object3 = Service.get3();
});

关于javascript - AngularJS Controller 不从服务更新模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24268348/

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