我正在跨多个控制器共享服务。我已经用这个简化的小提琴来说明它:http://jsfiddle.net/ziaxdk/FFgpX/
app.service("common", function() {
var first = 1, second = 2;
return {
first: first,
second: second,
// {{model.first+model.second}} calculate this down here??
calc: function() { return first + second; } // This line is not watched
}
});
如何在服务对象上创建计算出的规则/属性,以便它们反映到视图中?
此致
午
答案 0 :(得分:3)
特定于AngularJS的问题不在于它是如何在JavaScript中为原始类型工作的。基本上,当你有一个原始类型的闭包时,你得到原始值的副本而不是对它们的引用。你破坏了链接。因此,在您的代码中,您一直在更改不同的变量值,然后用于计算。
您可以按如下方式修改服务:
app.service("common", function() {
return {
first: 1,
second: 2,
calc: function() { return this.first + this.second; }
}
});
您的代码即可运行。
这是一个有效的jsfiddle:http://jsfiddle.net/e3nzY/2/