2011-07-13 123 views
0

我正在使用xml api數據饋送的骨幹js。我爲每個接收xml的頁面都有一個頂級模型,並將其轉換爲json。然後,我有模型中的其他方法,通過控制器將json模型的特定部分返回到特定視圖。這一切都按預期工作。定期更新骨幹JS模型

我想定期(通過setTimeout)更新頂級模型,讓它觸發更改事件並更新視圖。我的問題是我應該在哪裏處理/初始化這個週期性事件的觸發來更新模型,因爲它不是一個真正的用戶觸發事件?

回答

1

我會給我的模型一個startUpdate()方法,一個endUpdate()方法,和一個內部的onTimerUpdate()做一個提取。然後,您可以在模型上調用startUpdate()並讓它根據需要運行,當服務器端更新不便時(例如,在客戶操縱數據的過程中)暫停時,暫停它,然後重新啓動它在客戶端更改成功完成寫入服務器之後。

更好的是,您可以將它製作成混合模式,並將其與多種不同的模型一起使用。

+0

所以我在模型中添加了startUpdate,endUpdate和onTimerUpdate。我在我的頁面控制器的索引操作中調用了startUpdate,並將模型傳遞給各種視圖,這些視圖成功地將模型綁定到所有視圖。我現在遇到的問題是我想通過控制器將模型的某些部分傳遞給不同的視圖(例如data:model.getDerivedSubModel())作爲通用屬性來重用視圖。 – user843058

+0

但是當我嘗試這樣做時,模型被更新,但是當重新呈現視圖時(例如,當重新呈現視圖時模型沒有通過控制器),方法返回的派生數據保持不變。有沒有一種方法可以通過控制器將模型的特定部分綁定到視圖上?我意識到在一個模型中使用所有這些數據並不是理想的情況,但我不確定它是如何分離它的,因爲它來自一個url並返回到一個xml blob中。 – user843058

+0

模型是事物的集合嗎?或者它只是一個巨大的一滴?如果它是一個集合,您可以編寫動態過濾器並使視圖僅顯示集合的一部分。不過,聽起來我應該像你應該測試你的模型(即很多'console.log()s')並且看看更新中有什麼變化,因爲視圖應該反映模型的當前狀態。如果它改變了,那麼視圖也應該改變。 –