2013-04-23 79 views
1

我正在跨多個控制器共享服務。我已經做了這個簡化小提琴來說明它: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 
} 

});

如何在服務對象上創建計算規則/屬性以使其反映到視圖中?

問候,

肯尼斯

回答

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/