Ember.js PushObject 未在 ArrayController 中插入对象

Posted

技术标签:

【中文标题】Ember.js PushObject 未在 ArrayController 中插入对象【英文标题】:Ember.js PushObject not inserting object in an ArrayController 【发布时间】:2012-03-27 01:33:47 【问题描述】:

我有以下 ArrayController:

Lead.Controllers.Leads = Ember.ArrayController.extend
  init: ->
    content: Ember.A()

    @view = Ember.View.create
      controller: @
      templateName: 'app/templates/leads/list'

    @view.appendTo $('#leads')

  addLead: (data) ->
    lead = Lead.Lead.create()
    lead.setProperties JSON.parse data
    console.log lead.get 'company'
    debugger
    @pushObject lead
    console.log @get('length')

问题是我调用推送对象后,长度还是0。我真的看不出我做错了什么。

谁能看到我做错了什么?我唯一能想到的就是 Content 通过Ember.A() 设置为一个空数组。

我不知道还能是什么。

【问题讨论】:

【参考方案1】:

我不太确定您的问题出在哪里,因为我 a) 并不真正了解或使用 CoffeeScript,并且 b) 没有 jsFiddle 或工作示例。但是,如果我没看错,那么您尝试执行以下操作:See this jsFiddle 按预期工作。希望这能为您指明正确的方向。

【讨论】:

谢谢,我没有从 init 调用 _super()。那是我缺少的一点。可惜是需要的。【参考方案2】:

这是一个咖啡脚本语法错误。 有两种解决方案(取决于您要实现的内容)。

第二个示例将为控制器的每个实例使用相同的数组。 另外,我建议在重写 init 方法时调用@_super(),否则您可能会在某些类中得到一些意想不到的结果。

Ember.ArrayController.extend
  init: ->
    @_super()
    @set 'content', Ember.A()
    # content

Ember.ArrayController.extend
  content: Ember.A()
  init: ->
    @_super()
    # content

【讨论】:

以上是关于Ember.js PushObject 未在 ArrayController 中插入对象的主要内容,如果未能解决你的问题,请参考以下文章

Ember.js - 将 ember-cli-mirage 用于假模型时未找到模型

Ember.js 和 RequireJS

Ember.js 中的视图与组件

toastr 和 ember.js

Ember.js 和玩!框架身份验证最佳实践

Ember.js:Handlebars 不显示任何内容