当我使用它时,它可以工作:`
angular.module('app').service('DataService', function() {
return {theme: "amelia"}
});
但是当我使用它时,没有更新?你能告诉我区别吗?
angular.module('app').service('DataService', function() {
return {
theme: function() {
return {theme: "amelia"}
}
};
});
控制器
$scope.settings = DataService.theme();
玉
select.form-control(ng-model="settings.theme", ng-options="theme for theme in themes")
第二种方式是否可行?因为我会分享更多数据然后一个对象!
谢谢!
答案 0 :(得分:1)
代码的第一个版本调用函数一次以实例化服务。之后,因为服务是角度的单例,所以函数不会被再次调用,而是在每个使用控制器的中访问返回值("静态"对象)之后的服务。
第二个版本,您注入服务的每个控制器都会调用theme
函数,该函数每次都会实例化一个全新的对象。您现在已经有效地减轻了服务是单身的事实。这就是为什么数据不会与第二组代码共享的原因。
如果在每种情况下在函数调用上设置断点并运行代码,您应该看到第一个版本调用一次,而第二个版本将被调用多次。
"让它工作" ...
您无法使用函数调用,但如果您需要共享多个数据对象,则没有任何理由不对它们进行嵌套。你可以很容易地做一些事情:
angular.module('app').service('DataService', function() {
return {
dataObjects: [
{"type":"theme", "theme":"amelia"},
{"type":"user", "id":123, "name":"ABC"}
]};
});
在示例中,我添加了第二个对象,它是一个用户对象,用于共享" dataObjects"阵列。在" dataObjects"中查找特定对象数组,你可以循环,直到找到正确的类型("主题",例如)。如果您需要将对象设置为原始对象(没有添加的类型属性),如果有必要,您甚至可以更深地嵌套一层。
希望有所帮助!
答案 1 :(得分:0)
它应该是主题:function()....在你的服务中。替换" ="与":"。