Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在emberJS中在运行时生成方法_Javascript_Ember.js_Ember Data_Metaprogramming_Emblem.js - Fatal编程技术网

Javascript 在emberJS中在运行时生成方法

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

我试图在运行时在ember中生成几个方法,我正在尝试的代码是

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')