跨多个控制器的共享服务的计算属性

时间:2013-04-23 05:41:32

标签: angularjs

我正在跨多个控制器共享服务。我已经用这个简化的小提琴来说明它: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
}

});

如何在服务对象上创建计算出的规则/属性,以便它们反映到视图中?

此致

1 个答案:

答案 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/