2015-11-10 33 views
0

如何在将新ID传递给组件时更新this.store.query?即this.store.query更新组件列表

//应用/ template.bs

// Generic ember link-to passing the dashboard id 
    <ul class="dropdown-menu"> 
     {{#each dashboard.service as |dashboard|}} 
      <li> 
      {{#link-to 'dashboard' dashboard}}{{dashboard.dashboard_name}}{{/link-to}} 
      </li> 
     {{/each}} 
    </ul> 

//仪表板/ template.hbs

<h1>{{model.dashboard_name}}</h1> 
{{widget-list dashboard_id=model.id}} 

//组件/窗口小部件列表/ template.hbs

{{#each widgets as |widget|}} 
    {{widget-base widget=widget}} 
    {{else}} 
    <small>No widgets for this dashboard</small> 
{{/each}} 

// components/widget-list/component.js

import Ember from 'ember'; 

export default Ember.Component.extend({ 
    widgets: Ember.computed(function() { 
    var widgets = this.store.query('widget', { 
     dashboard: this.get('dashboard_id') 
    }); 
    return widgets; 
    }), 
}); 

基本上我正在查看附加小部件的不同仪表板。当我点击我的仪表板链接时,model.dashboard_name会更新,但这些小部件保持不变。如果我硬刷新,它们会更新,但是我需要在点击每个仪表板链接时使用新的小部件列表进行更新。出于某种原因,这没有发生。

任何人都可以提供一个修复或一些信息,我需要做什么?

回答

1

你可以看dashboard_id属性:

export default Ember.Component.extend({ 
    widgets: Ember.computed('dashboard_id', function() { 
    var widgets = this.store.query('widget', { 
     dashboard: this.get('dashboard_id') 
    }); 
    return widgets; 
    }), 
}); 
+0

一个变化,它的工作:)谢谢。 –