2016-08-18 80 views
-1

在我的Ember模板/ hbs中,我有以下代碼;Ember將控制器屬性綁定到hbs模板

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

此外,一些AJAX的處理之後,我做

self.set('myPanels', myPanels); 

現在因爲某些原因,似乎這我設置控制器屬性沒有得到綁在HBS文件

的唯一的事情是屬性無法提供即時的,我必須做一些AJAX的處理在該年底設定的數據&,我設置myPanels

我做錯了什麼?

回答

0

假設或許myPanels比爲accordionPanels的容器多,那麼你可以創建accordionPanels一個計算性能:

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

然後,在你的模板:

{{#my-accordion accordionPanels=accordionPanels}} 
{{/my-accordion}} 
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}} 

模板\ components \ my-accordion.hbs

{{yield accordionPanels}}