emberjs.comでdocumentationに従っていますが、最初のバインディングの例が機能しません。emberバインディングが文書化されているように動作しない
デモを行うためにjsfiddleを作成しました。私は何が欠けていますか?
emberjs.comでdocumentationに従っていますが、最初のバインディングの例が機能しません。emberバインディングが文書化されているように動作しない
デモを行うためにjsfiddleを作成しました。私は何が欠けていますか?
Ember.jsは、バインディング、オブザーバーなどを許可するためにRunLoopの概念を使用しています。
例の問題点は、バインドされたプロパティを設定し、console.log
で値をすぐに取得すると、イベントが発生せず、RunLoopがトリガされ、変更が同期されることです。 RunLoopに関する2つの優れたブログ記事:Part 1とPart 2があります。彼らはSproutcoreをターゲットにしていますが、Ember.jsの概念はほぼ同じです。
例を作るには2通りの方法があります。 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
または第二の選択肢にあるを参照してくださいあなたのためのすべての実行ループのものを扱い、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>
あなたはエンバーの実行ループをあなたのログステートメントの前に同期する機会を与えるためにあなたのバインディングを設定した後Ember.run.sync();
を呼び出す必要があります。これはEmberでテストするための便利なテクニックですが、通常Emberアプリケーション自体では必要ありません。
、我々はまた、Ember.run.sync()を使用することができますが、コールは1つだけで、その後必要です。 http://jsfiddle.net/akLVy/10/ –
よくできました、Clemens - 非常に便利です!私はこれをドキュメントでもっとうまく説明する必要があると思います。例の1つが「そのまま」実行されない場合、初心者のための良い紹介ではありません。 –
ありがとう!ダン、私は完全に同意するでしょう。これはドキュメントで更新する必要があります! – pangratz