7
A
回答
11
Ember.js使用RunLoop的概念,允許綁定,觀察員等。
與實施例中的問題是,通過設置(結合的)屬性,並立即通過console.log
獲取值沒有事件被觸發,其將觸發RunLoop和因此同步變化。有兩篇關於RunLoop的優秀博客文章:Part 1和Part 2。雖然他們瞄準Sproutcore,但對於Ember.js來說,這個概念大致相同。
有兩種方法可以讓你的榜樣工作。
通過Ember.run.sync()
隨着文檔狀態強制同步,調用Ember.run.sync()
...是一個有用的方法來立即強制所有綁定的應用程序同步。這使得這樣的代碼,看到http://jsfiddle.net/pangratz666/cwR3P/
App = Ember.Application.create({});
App.wife = Ember.Object.create({
householdIncome: 80000
});
App.husband = Ember.Object.create({
householdIncomeBinding: 'App.wife.householdIncome'
});
// force bindings to sync
Ember.run.sync();
console.log(App.husband.get('householdIncome')); // 80000
// Someone gets raise.
App.husband.set('householdIncome', 90000);
// force bindings to sync
Ember.run.sync();
console.log(App.wife.get('householdIncome')); // 90000
或第二選擇是......
在視圖
顯示在視圖中顯示的屬性值處理所有RunLoop的東西給你,看http://jsfiddle.net/pangratz666/Ub97S/
的Java腳本:
App = Ember.Application.create({});
App.wife = Ember.Object.create({
householdIncome: 80000
});
App.husband = Ember.Object.create({
householdIncomeBinding: 'App.wife.householdIncome'
});
// invoke function in 3000ms
Ember.run.later(function() {
// someone gets a raise
App.husband.set('householdIncome', 90000);
}, 3000);
把手(視圖):
<script type="text/x-handlebars" >
Wifes income: {{App.wife.householdIncome}}<br/>
Husbands income: {{App.husband.householdIncome}}
</script>
3
你需要設置您的綁定給Ember的運行循環機率使你的日誌報表前同步之後調用Ember.run.sync();
。這對於使用Ember進行測試也是一項方便的技術,但在Ember應用程序中通常不需要它們。
相關問題
- 1. 無法獲得實際記錄編號
- 2. 爲什麼我無法獲得綁定?
- 3. 餘燼推記錄
- 4. 無法獲得創紀錄
- 5. 無法獲得通話記錄歷史記錄的正確月份
- 6. 灰燼獲得的hasMany
- 7. 無法獲得詳細的Apache日誌記錄mod_rewrite
- 8. 的Python + DNS:無法獲得RRSIG記錄:未回答
- 9. 無法獲得與COL1的獨特記錄和COL2排序
- 10. 無法獲得JAX-WS綁定定製工作
- 11. 無法獲得的MonoTouch綁定庫工作
- 12. 錯誤:無法約束..;當在RadGrid中綁定記錄時
- 13. 帶ETO_IGNORELANGUAGE的ExtTextOutW()無法捕獲記錄
- 14. 無法記錄
- 15. Jquery Mobile和Backbone - 無法獲得歷史記錄工作
- 16. 無法獲得Log4j數據庫日誌記錄工作
- 17. 無法獲得RoR Active記錄模型ID來執行查詢
- 18. WPF Combobox SelectionChanged記錄綁定
- 19. 無法獲取顯示的綁定值
- 20. PDO,無法刪除選定的記錄
- 21. 無法獲得代碼綁定爲組合框工作
- 22. jquery ajax綁定無法在asp.net頁面上獲得
- 23. 檢索燼中的記錄js
- 24. PHP從URL獲得記錄
- 25. Coredata performFetch無法獲取新記錄
- 26. 無法獲取超過10k條記錄
- 27. 獲取帶有餘燼數據的隨機記錄
- 28. 無法從分組記錄中獲取最新記錄
- 29. Salesforce.com:UNABLE_TO_LOCK_ROW,無法獲得這一紀錄
- 30. Express.js和passport.js,但無法獲得/登錄
隨着來看,我們也可以使用Ember.run.sync(),但只有一個呼叫,然後必要的。 http://jsfiddle.net/akLVy/10/ – 2012-04-02 16:35:10
幹得好,克萊門斯 - 非常有幫助!我認爲我們需要在文檔中更好地解釋這一點。這對於初學者來說並不是一個很好的介紹,當其中一個例子沒有按「原樣」運行時。 – 2012-04-02 17:17:03
謝謝!丹,我完全同意。這需要在文檔中更新! – pangratz 2012-04-02 17:18:37