【问题标题】:Generate methods at runtime in emberJS在 emberJS 中运行时生成方法
【发布时间】:2014-12-02 06:49:16
【问题描述】:

我试图在运行时在 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")

但它没有生成方法。那么我有什么遗漏吗?

【问题讨论】:

    标签: javascript ember.js ember-data metaprogramming emblem.js


    【解决方案1】:

    您将that 定义为控制器上的属性,但尝试将其用作defineAttributes 方法中的局部变量。将that 更改为方法中的局部变量,它应该可以正常工作。或者更好的是,只需使用 Coffeescript 的胖箭头函数来保持 this 的当前值:

    defineAttributes: (->
        ['unsubmitted', 'submitted', 'cancelled'].forEach (f) =>
            Em.defineProperty this, f, Em.computed.filterBy('model', f, true)
    ).on('init')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 2023-04-07
      • 2010-10-06
      • 1970-01-01
      相关资源
      最近更新 更多