gpt4 book ai didi

javascript - Angular : Watch Service for data changes?

转载 作者:数据小太阳 更新时间:2023-10-29 06:01:28 24 4
gpt4 key购买 nike

我有一个定义如下的服务:

appServices.service('SharedData', function() {
var data = {};

function setContacts(contacts) {
data.contacts = contacts;
};

function getContacts() {
return data.contacts;
};

return {
setContacts: setContacts,
getContacts: getContacts
};
});

在另一个 Controller 中,我按如下方式访问数据:

$scope.contacts = SharedData.getContacts();

一切都很好 - 但我希望 $scope.contacts 收到警报,并在 SharedData 中的数据发生变化时更新它的数据。

我该如何实现?

最佳答案

尝试显式监视:

$scope.$watch(函数() {
返回 SharedData.getContacts();
},函数(新联系人){
//用 newContacts 做点什么。
});

如果集合的元素可以在整个集合对象不改变身份的情况下改变(我假设是一个 ArrayObject),你需要使用 $ scope.$watchCollection,尽管这比普通的 $watch 慢得多,所以如果您可以立即更改整个集合,请避免。

请注意,将函数公开到仅返回当前联系人的范围可能是更好的设计:

$scope.getContacts = function() { 返回 SharedData.getContacts(); };

如果您需要在 SharedData 中进行通知,您可以将 $rootScope 注入(inject)其中并将 $watch 放入其中。

关于javascript - Angular : Watch Service for data changes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29996803/

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