在我的Ember模板/ hbs中,我有以下代码;
{{#my-accordion accordionPanels=myPanels.accordionPanels as |accordion|}}
{{/my-accordion}}
同样在我的后备控制器js中,经过一些AJAX处理后,我做了
self.set('myPanels', myPanels);
现在由于某些原因,似乎我设置的控制器属性没有绑定到hbs文件
唯一的事情是该属性不能立即使用,我必须做一些AJAX处理来设置数据&最后,我正在设置myPanels
我做错了吗?
答案 0 :(得分:0)
假设myPanels
可能不仅仅是accordionPanels
的容器,那么您可以为accordionPanels
创建一个计算属性:
accordionPanels: Ember.computed('myPanels', function() {
return this.get('myPanels.accordionPanels');
}
然后,在您的模板中:
{{#my-accordion accordionPanels=accordionPanels}}
{{/my-accordion}}
答案 1 :(得分:0)
你做的完全正确,它应该工作。您可以使用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}}
<强>模板\组件\ MY-accordion.hbs 强>
{{yield accordionPanels}}