opt*_*con 5 javascript angularjs
我有一个定义为这样的服务:
appServices.service('SharedData', function() {
var data = {};
function setContacts(contacts) {
data.contacts = contacts;
};
function getContacts() {
return data.contacts;
};
return {
setContacts: setContacts,
getContacts: getContacts
};
});
Run Code Online (Sandbox Code Playgroud)
在另一个控制器中,我按如下方式访问数据:
$scope.contacts = SharedData.getContacts();
Run Code Online (Sandbox Code Playgroud)
这一切都很好 - 但是我希望$scope.contacts每当SharedData中的数据发生变化时都会收到警报并更新数据.
我该如何做到这一点?
实现此目的的一种方法是在您的服务中定义一个函数,该函数允许您注册一个回调,以便在setContacts调用时调用(onContactsUpdated如下)。这个解决方案并不完美(例如,它只允许您注册一个“处理程序”),但应该能让您走上正确的轨道。如果需要在多个地方使用,您可以对其进行调整。
appServices.service('SharedData', function() {
var data = {};
function setContacts(contacts) {
data.contacts = contacts;
if(typeof(data.contactsUpdatedCallback) !== "undefined"){
data.contactsUpdatedCallback();
}
};
function getContacts() {
return data.contacts;
};
function onContactsUpdated(callback){
data.contactsUpdatedCallback = callback;
};
return {
setContacts: setContacts,
getContacts: getContacts,
onContactsUpdated: onContactsUpdated
};
});
Run Code Online (Sandbox Code Playgroud)
然后在你的控制器中:
SharedData.onContactsUpdated(function(){
//do something with updated SharedData.getContacts()
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1587 次 |
| 最近记录: |