0

我正在尝试使用 我找不到绑定视图 ID、collapse.handlebars的方法来实现Bootstrap Collapse(本节末尾的简单可折叠)Ember.View

<button type="button" class="btn btn-danger" data-toggle="collapse" {{bindAttr data-target="view.contentId"}}>
  simple collapsible
</button>

{{view view.collapseContentView class="collapse in"}}

我的观点:

App.CollapseView = Ember.View.extend({

  templateName: 'collapse',

  collapseContentView: Ember.View.extend({
    template: Ember.Handlebars.compile("Collapse body text")
  }),

  contentId: function(){
    return "#"+this.get('collapseContentView.elementId')
  }.property()

})

我不想手动设置 id 而是想使用 ember 生成的,有什么原因这不起作用?

4

1 回答 1

1

collapseContentView是一个视图类 ( ) 并且在实例化它之前extend不会有( )。elementIdcreate

在您的模板中,当您这样做时{{view view.collapseContentView}},将创建视图的一个新实例,但它不会更改 的值view.collapseContentView,它仍然是一个类,因此view.collapseContentView.elementId没有意义。

我建议使用Ember.ContainerView,这是一种以编程方式控制视图的好方法。这是使用容器视图处理两个视图之间的事件的示例http://www.emberplay.com#/workspace/1140286638

于 2012-11-27T15:39:13.970 回答