Ember.js 作为属性的ember containerView

Ember.js 作为属性的ember containerView,ember.js,Ember.js,我想引用containerview作为parentview的属性 例如,在parentView的模板中,我想如下定义containerView: <a {{action toggleForm target="view"}} class="btn btn-primary" href="#">Create</a> {{view view.formContainer}} toggleForm: (e) -> e.stopPropagation()

我想引用containerview作为parentview的属性

例如,在parentView的模板中,我想如下定义containerView:

<a {{action toggleForm target="view"}} class="btn btn-primary" href="#">Create</a>
{{view view.formContainer}}
  toggleForm: (e) ->
    e.stopPropagation()

    @get('formContainer').set('currentView', Em.View.create())
但问题是formContainer属性引用的是类而不是实例

我可以通过以下方式从childViews集合访问它:

formContainer = @get('childViews.firstObject')
但是很明显,如果视图不再是第一个对象,那么我的代码就会中断


我如何在不查看childViews集合的情况下引用实例,或者这样做是可能的?

您的思路是正确的。问题是您试图使用
formContainer
属性(显然已设置为视图类)作为对视图实例的引用

如果要从父视图访问视图实例,则需要使用视图辅助对象的viewName属性。有关详细信息,请参阅

<a {{action toggleForm target="view"}} class="btn btn-primary" href="#">Create</a>
{{view view.formContainer viewName="formContainerViewName"}}
顺便说一句,我建议将formContainer属性重命名为formContainer,因为约定的类定义以大写开头

下面是一个工作示例:

toggleForm: (e) ->
  e.stopPropagation()
  @get('formContainerViewName').set('currentView', Em.View.create())