【问题标题】:Controller properties displaying as [object Object] (when using coffeescript)显示为 [object Object] 的控制器属性(使用 coffeescript 时)
【发布时间】:2013-06-26 12:01:07
【问题描述】:

我有一个用 CoffeeScript 编写的控制器,如下所示:

class App.SidebarController extends Ember.ObjectController
  namez: (->
    @get('name')
  ).property()

然而,当我调用{{namez}} 标签时,我认为这会返回为[object Object]

我在 JavaScript 中重新编写了相同的控制器,并且该属性按预期打印到模板中:

App.SidebarController = Ember.ObjectController.extend({
  namez: function() {
    return this.get('name');
  }.property()
});

关于为什么 CoffeeScript 版本没有返回正确值的任何想法?

【问题讨论】:

    标签: ember.js coffeescript


    【解决方案1】:

    Coffeescript 的 extends 关键字进行基本的基于原型的继承。 Ember 的扩展实际上是一个更复杂的对象系统,它提供 getter 和 setter、计算属性等。两者不等价。

    Ember 的等效 Coffeescript 将是,

    App.SidebarController = Ember.ObjectController.extend
      namez: (->
        @get('name')
      ).property()
    

    【讨论】:

    • 不错的收获。我想这是来自编写 Backbone 代码的习惯。谢谢!
    • 不错的咖啡脚本功能,如粗箭头(将方法绑定到实例)在不使用“class ... extends ..”时不起作用。如何让它发挥作用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2016-07-26
    相关资源
    最近更新 更多