2013-02-12 77 views
2

我想盡可能使下面的代碼工作。目標是通過使用Javascript「apply」方法獲得一個計算屬性,該屬性取決於字符串列表。Ember使用JS的計算屬性apply()

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/apply

App.View = Em.View.extend 
    myProps: ['content.prop1', 'content.prop2'] 
    myComputed : (-> 
    return "super valuable things" 
).property.apply(@get("myCompted"), @get("myProps")) 

到目前爲止...沒有運氣。它似乎拒絕了我最真誠的願望來完成這項工作。

任何幫助將被極大的讚賞! Steve

回答

2

你不需要使用apply函數,我不知道爲什麼你認爲你需要這樣做。屬性函數只需要它所依賴的屬性的參數。在這種情況下,它是'myProps'。你不需要get這個財產,Ember會爲你工作。

看看這jsfiddle,你會明白我的意思。您可以對myComputed屬性中的數組進行所有操作,並且該陣列已經可用。

App.ApplicationView = Em.View.extend({ 
    myProps: ['123', '456'], 
    myComputed : function() { 
     return this.get('myProps'); 
    }.property('myProps') 
}); 
+0

這並沒有達到目標。 myProps是我希望依賴的其他屬性的數組。考慮這個小提琴: – stevekane 2013-02-12 20:42:21

+0

你忘了把鏈接包含到小提琴中。 :) – Deif 2013-02-12 21:12:21

+0

對不起,我有一個大規模的清晨brainfart,並決定不實際鏈接到任何東西或完成我的想法。我想要做的是構造一個字符串數組,這是我想依賴的屬性的名稱。然後將該數組字符串傳遞給.property,並在任何這些道具改變時重新計算它。 – stevekane 2013-02-12 21:14:51