1
我是Ember.js的新手,我試圖更新模型中的狀態變量,但是當我更改它時,視圖不會更新。更新模型時不會更新模板輸出
這是我想要做的JavaScript代碼:
App = Ember.Application.create({});
App.EventBus = Ember.Object.extend({
eventBus: null,
connect: function() {
Ember.run.later(this, function() {
App.Sessiondata.connection.status = "Online";
console.log("status: " + App.Sessiondata.connection.status)
}, 2000)
}.on('init')
});
App.Router.map(function() {
this.resource('home', { path: '/' });
});
App.Sessiondata = {
connection : {
status: 'Offline',
statusClass: 'alert-error',
retryInterval: 20000,
maxAttempts: 5
},
user : {
fullname: 'Dummy User',
email: '[email protected]'
},
};
App.ApplicationRoute = Ember.Route.extend({
model: function() {
return App.Sessiondata;
}
});
App.ApplicationController = Ember.ObjectController.extend({
eventbus: App.EventBus.create()
})
這裏是的jsfiddle:http://jsfiddle.net/k82Lhj0j/
的想法是,一旦eventbus是開放的,以更新連接狀態。 對於這個小測試,我忽略了真正的事件總線代碼(它確實有效,但與本次測試無關),並簡單地使用run.later來模擬類似的行爲。
正如您所看到的,結果始終爲「狀態:離線」,而它應在2秒後變爲「狀態:在線」。
我可能在Ember.js的工作原理上做錯了什麼,但我沒有看到它。
好的,謝謝。我知道這是明顯的,但我不習慣有特定的對象,而不是普通的JavaScript對象。 – 2014-09-02 10:08:31
是的,你找對存儲Session數據的地方是對的。 這實際上與我目前在Ember.js中遇到的另一個問題有關:您應該在哪裏放置應該在應用程序範圍內可用的數據/代碼? 例如事件總線代碼將不得不通過額外的方法進行擴展,例如發送,發佈等,這些應該可以從整個應用程序中訪問 (編輯:固定錯字) – 2014-09-02 10:11:25