Javascript 在emberJS中在运行时生成方法
我试图在运行时在ember中生成几个方法,我正在尝试的代码是Javascript 在emberJS中在运行时生成方法,javascript,ember.js,ember-data,metaprogramming,emblem.js,Javascript,Ember.js,Ember Data,Metaprogramming,Emblem.js,我试图在运行时在ember中生成几个方法,我正在尝试的代码是 App.TestController = Ember.ArrayController.extend App.AnotherMixin, unsubmitted: Em.computed.filterBy("model", "unsubmitted", true) submitted: Em.computed.filterBy("model", "submitted", true) canceled: Em.compute
App.TestController = Ember.ArrayController.extend App.AnotherMixin,
unsubmitted: Em.computed.filterBy("model", "unsubmitted", true)
submitted: Em.computed.filterBy("model", "submitted", true)
canceled: Em.computed.filterBy("model", "canceled", true)
# Rather than using above methods I'm trying to generate them with meta-programming.
that: @
defineAttributes: (->
[
"unsubmitted"
"submitted"
"cancelled"
].forEach ( f ) ->
Em.defineProperty that , f, Em.computed.filterBy("model", f, true)
return
return
).on("init")
但它不是生成方法。那么我缺少什么了吗?您正在将
定义为控制器上的属性,但试图将其用作定义属性方法中的局部变量。将that
更改为方法中的局部变量,它应该可以正常工作。或者更好的方法是,只需使用Coffeescript的fat arrow函数来保持当前值this
:
defineAttributes: (->
['unsubmitted', 'submitted', 'cancelled'].forEach (f) =>
Em.defineProperty this, f, Em.computed.filterBy('model', f, true)
).on('init')