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. 錄音文件,無法得到記錄
- 7. 無法編輯燼數據中的hasMany關聯子記錄
- 8. SQL無法獲取記錄
- 9. 無法獲取NS記錄
- 10. 無法獲取sqlite記錄
- 11. 無法獲得創紀錄
- 12. Nodejs無法獲得/登錄
- 13. 無法獲得父記錄後按子句排序的子記錄
- 14. 無法獲得通話記錄歷史記錄的正確月份
- 15. 無法從cakephp的habtm中獲得所需的記錄
- 16. 無法獲得使用餘燼數據的關係
- 17. 無法獲得簡單的餘燼數據工作
- 18. 無法保存/使用燼數據更新記錄
- 19. 的Python + DNS:無法獲得RRSIG記錄:未回答
- 20. 無法獲得與COL1的獨特記錄和COL2排序
- 21. 無法在RollingLogFileAppender中獲得所需的日誌記錄名稱
- 22. 無法獲得詳細的Apache日誌記錄mod_rewrite
- 23. 我無法獲得列表的最高記錄
- 24. 灰燼獲得的hasMany
- 25. $ rootScope的數據綁定無法獲得正確的值
- 26. 無法獲得JAX-WS綁定定製工作
- 27. 從特定日期獲得記錄
- 28. 無法獲得的MonoTouch綁定庫工作
- 29. 無法獲得正確的挖空綁定上下文
- 30. 錯誤:無法約束..;當在RadGrid中綁定記錄時
隨着來看,我們也可以使用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