Ember将控制器属性绑定到hbs模板

问题描述:

在我的Ember模板/ hbs中,我有以下代码;Ember将控制器属性绑定到hbs模板

{{#my-accordion accordionPanels=myPanels.accordionPanels as |accordion|}} 
{{/my-accordion}} 
我支持控制器JS

此外,一些AJAX的处理之后,我做

self.set('myPanels', myPanels); 

现在因为某些原因,似乎这我设置控制器属性没有得到绑在HBS文件

的唯一的事情是属性无法提供即时的,我必须做一些AJAX的处理在该年底设定的数据&,我设置myPanels

我做错了什么?

假设或许myPanels比为accordionPanels的容器多,那么你可以创建accordionPanels一个计算性能:

accordionPanels: Ember.computed('myPanels', function() { 
    return this.get('myPanels.accordionPanels'); 
} 

然后,在你的模板:

{{#my-accordion accordionPanels=accordionPanels}} 
{{/my-accordion}} 

你正在做正确的它应该工作。您可以交叉检查self是指控制器和myPanels使用console.log(self,myPanels)

控制器包含正确的数据\的application.js

import Ember from 'ember'; 
import moment from 'moment'; 

export default Ember.Controller.extend({ 
    myPanels:{accordionPanels:[1,2]}, 

    init(){ 
     this._super(...arguments); 
     //For illustration purpose 
     Ember.run.later((() => { 
      console.log('init emer run callback ',this); 
      this.set('myPanels',{accordionPanels:[3,4,5]}); 
     }),5000); 
    },  
}); 

模板\ application.hbs

{{#my-accordion accordionPanels=myPanels.accordionPanels as |accordion|}} 
From Child :{{accordion}} <br/> 
From Parent: {{myPanels.accordionPanels}} 
{{/my-accordion}} 

{{outlet}} 

模板\ components \ my-accordion.hbs

{{yield accordionPanels}}