我正在尝试开发“模型”服务,以使我的控制器之间的共享数据保持同步。 我最终得到了这个解决方案:
myApp.factory('UserService', function() {
return {
data: {
user: {
vm: {
firstName: '',
lastName: ''
},
save: function() {
console.log("save user");
}
},
settings: {
vm: {
theme: '',
language: '',
currency: ''
},
save: function() {
console.log("save user settings");
}
},
save: function() {
console.log("save all");
}
}
};
});
(这里为了更好地理解它是如何工作的:http://jsfiddle.net/n36kpuf6/)。
我认为这不是一个糟糕的解决方案,它让我的HTML保持整洁,我可以一眼就看出我可以在控制器中使用哪些功能,让它们保持苗条;我更喜欢基于事件或范围的其他数据共享解决方案...
与此同时,我想,也许,它有点困惑;所以我通过John Papa风格指南搜索我如何更好地组织它,但我找不到关于这种“模型”服务的例子,只是基于方法的简单服务...所以我最终认为我想念东西。
有人可以就如何更有条理地保持这项服务给我建议吗?
答案 0 :(得分:0)
为什么将函数放在对象中?为什么不检索一个干净的对象:
myApp.factory('UserService', function() {
return {
data: {
user: {
firstName: '',
lastName: ''
},
settings: {
theme: '',
language: '',
currency: ''
}
}
};
});
答案 1 :(得分:0)
我最终得到了这个解决方案:
myApp.factory('UserService', function() {
var service = {
user: {
vm: {},
save: saveUser
},
settings: {
vm: {},
save: saveSettings
},
save: saveAll
};
return service;
function saveUser() {
console.log("save user");
console.log(service.user.vm);
}
function saveSettings() {
console.log("save user settings");
console.log(service.settings.vm);
}
function saveAll() {
console.log("save all");
console.log(service);
}
});
(小提琴:http://jsfiddle.net/tudev0xc/)
我认为它仍然具有多功能性和可读性。