绑定ember生成的elementId,Ember + Bootstrap Collapse

时间:2012-11-27 12:41:37

标签: javascript twitter-bootstrap ember.js

我正在尝试使用Ember.View实施Bootstrap Collapse(本节末尾的简单可折叠) 我找不到绑定视图id的方法,

collapse.handlebars

<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生成的一个,这有什么理由不起作用?

1 个答案:

答案 0 :(得分:1)

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

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

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