2013-02-12 84 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