2012-03-14 6 views
1

これは私が本当にやろうとしている何 http://jsfiddle.net/8haXN/7/インスタンス化されたEmberjsオブジェクトプロパティのバインディングを変更することはできますか?

App.president = Ember.Object.create({ 
    name: "Barack Obama", 
    name2: "George Bush" 
}); 

App.country = Ember.Object.create({ 
    presidentNameBinding: 'App.president.name' 
}); 

App.country.set('presidentNameBinding', 'App.president.name2'); 
App.country.presidentName //stil returns 'Barack Obama' 

を動作していないよう別のArrayControllerからCollectionViewのcontentBindingを変更することです。それが可能か、それとも悪い考えですか?あなたが手動でこの方法をバインドする必要があります

答えて

0

App.country.bind('presidentName', Em.Binding.from('App.president.name2')); 

はここにjsfiddleです:http://wiki.sproutcore.com/w/page/12412963/Runtime-Bindingshttp://jsfiddle.net/efPGF/

バインディングについての詳細を読むために、私は古いSproutcoreのwikiを見てお勧めします。 SCプレフィックスをEmberに変更することを忘れないでください。

+0

感謝を参照してください。あなたの答えのためのhttp://jsfiddle.net/efPGF/1/ –

0

使用Ember.bind、答えを、jsfiddleリンクはので、私はそれを更新するために動作しませんでしたhttp://jsfiddle.net/8haXN/8/

App = Em.Application.create() 
App.president = Ember.Object.create({ 
    name: "Barack Obama", 
    name2: "George Bush" 
}); 

App.country = Ember.Object.create({ 
    // Ending a property with 'Binding' tells Ember to 
    // create a binding to the presidentName property. 
    presidentNameBinding: 'App.president.name' 
}); 

App.someController = Em.Object.create({ 
    change: function() { 
     Ember.bind(App, 'country.presidentName', 'App.president.name2'); 
    } 
});​ 
+0

ありがとう!バインディングを設定/変更する方法は複数あります。 –

+0

私の既存のEmber.jsアプリケーションでは、手作業でバインディングを変更する必要はありませんでした。私は、ほとんどの場合、新しいバインディングを作成するのではなく、コントローラの実際の内容を変更するだけです。バインディングを変更する一般的な方法を尋ねましたか、これで解決したい特定の問題がありますか? – pangratz

関連する問題