[英]Sharing data between controllers in Ember
我是Ember的新手,我正在把頭發拉出來。
我正在處理的應用程序有一組動態更新的“警報”。 我有警報模板/控制器/模塊都工作正常。 警報控制器具有用於顯示尚未被解除的警報的數量的方法。 這在警報模板中工作正常。
但是,當我從另一個控制器訪問相同的方法時,它總是返回0。
謝謝你的幫助!
更新 :
我發現如果我實際加載警報視圖,然后返回到主視圖,警報控制器將開始返回正確的值。 顯然,當菜單控制器訪問該方法時,夾具數據沒有准備就緒存在問題。 我還沒弄清楚原因。
嘗試這樣的事情:
App.HomeRoute = Ember.Route.extend({
renderTemplate: function(controller, model) {
this._super(controller, model);
this.render('menu', {
into: 'home',
outlet: 'alertsMenuItem',
controller: 'alerts'
});
}
});
<script type="text/x-handlebars" data-template-name="home">
<img {{bind-attr src=appInfo.headerImage}} id="header_image" alt="Header Image" />
{{render "alerts" model}}
<ul id="home_nav">
<li>Home</li>
<li>About</li>
<li>
{{outlet "alertsMenuItem"}}
</li>
</ul>
</script>
<script type="text/x-handlebars" data-template-name="menu">
{{#link-to 'alerts'}}
Alerts ({{remaining}})
{{/link-to}}
</script>
使用Ember.Route.render,您可以指定用於模板的controller
。
請注意,如果要從alerts
以外的路徑訪問AlertsModel,則應在AlertsController中設置模型。 這樣的東西適用於Ember 1.10,但對於早期版本可能略有不同:
App.AlertsController = Ember.ArrayController.extend({
init: function() {
var self = this;
this.store.find('alert').then(function(model) {
self.set('model', model);
});
},
sortProperties: ['createdAt:desc'],
sortedModel: Ember.computed.sort("model", "sortProperties"),
remaining: function() {
console.log(this.filterBy('isCompleted', false).get('length'));
return this.filterBy('isCompleted', false).get('length');
}.property('@each.isCompleted')
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.