Ember.js中的同级属性绑定

时间:2013-04-25 18:32:48

标签: ember.js

我是一个相对的Ember新手,所以我可能会遗漏一些明显的东西。我正在尝试为Bootstrap手风琴构建自定义视图。我正在使用相对视图,虽然它正在工作,但我想了解我是否可以简化一点。具体来说,我想知道是否可以使嵌入式href的{​​{1}}计算属性依赖于嵌入式toggleView的{​​{1}}这里是顶级视图,这是一个集合:

elementId

项视图对应于具有bodyView. css类的DOM元素。

App.AccordionView = Em.CollectionView.extend({
  headingTemplateName: 'accordion-heading',
  innerTemplateName: 'accordion-inner',
  tagName: 'div',
  classNames: ['accordion'],
  contentBinding: 'controller.content',

请注意,我已将accordion-group属性视为项目视图中的 itemViewClass: Em.View.extend({ tagName: 'div', classNames: ['accordion-group'], target: null, template: Em.Handlebars.compile("{{view view.headingView contentBinding='view.content'}}{{view view.bodyView viewName='bodyViewInstance' contentBinding='view.content'}}"), headingView: Em.View.extend({ tagName: 'div', template: Em.Handlebars.compile("{{view view.toggleView contentBinding='view.content'}}"), classNames: ['accordion-heading'], toggleView: Em.View.extend({ tagName: 'div', // Can be an 'a' templateNameBinding: 'parentView.parentView.parentView.headingTemplateName', classNames: ['accordion-toggle'], attributeBindings: ['dataToggle:data-toggle', 'dataParent:data-parent', 'href'], dataToggle: 'collapse', dataParent: function() { return this.get('parentView.parentView.parentView.elementId'); }.property(), 字段。

href

target嵌入式视图实例插入DOM时设置此字段。

        href: function() {
          return "#" + this.get('parentView.parentView.target');
        }.property('parentView.parentView.target')
      })
    }),
    bodyView: Em.View.extend({
      tagName: 'div',
      template: Em.Handlebars.compile("{{view view.innerView contentBinding='view.content'}}"),
      classNames: ['accordion-body', 'collapse'],

这一切都有效。但是,我想在bodyView

中做类似的事情
      didInsertElement: function() {
        this.get('parentView').set('target', this.get('elementId'));
      },
      innerView: Em.View.extend({
        tagName: 'div',
        classNames: ['accordion-inner'],
        templateNameBinding: "parentView.parentView.parentView.innerTemplateName"
      })
    })
  })
});

当我这样做时,我收到以下错误,我不确定我理解为什么:

toggleView

有没有办法完成我想要做的事情?

0 个答案:

没有答案