簡體   English   中英

更新模型時模板輸出未更新

[英]template output not updated when updating model

我是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: 'dummy@email.com'
    },
};

App.ApplicationRoute = Ember.Route.extend({
    model: function() {
        return App.Sessiondata;
    }
});

App.ApplicationController = Ember.ObjectController.extend({
    eventbus: App.EventBus.create()
})

這是jsfiddle: http : //jsfiddle.net/k82Lhj0j/

這個想法是在事件總線打開后立即更新連接狀態。 對於這個小型測試,我將忽略真正的事件總線代碼(它確實可以工作,但與該測試無關),而只是使用run.later來模擬類似的行為。

如您所見,結果始終為“狀態:脫機”,而2秒后應變為“狀態:脫機”。

我可能本着Ember.js的工作方式在做錯事,但我沒有看到。

您正在修改普通的javascript對象,而不是Ember對象。 如果不使用ember的“ set”方法,Ember將不會注意到屬性已更改,並且模板需要更新。 這可行(簡化了您的示例):

http://emberjs.jsbin.com/yaliyo/1/edit

話雖這么說,您現在必須處理另一個問題才能找到存儲Sessiondata等的位置。ApplicationController是一個選擇,但可能不是最好的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM