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}}