2012-04-30 11 views
6

Emberjsは、選択/チェックボックスのチェックボックスオプションを処理するためのチェックボックスのselectionBindingを提供しますか?EmberJsのチェックボックスのSelectionBinding

「はい」の場合はどうすればよいですか? Ember.Checkboxcheckedプロパティに

答えて

10

バインド、http://jsfiddle.net/5pnVg/参照:

ハンドル

{{view Ember.Checkbox checkedBinding="App.objController.isChecked" }} 

JavaScriptの

App.objController = Ember.Object.create({ 
    isChecked: true, 

    _isCheckedChanged: function(){ 
     var isChecked = this.get('isChecked'); 
     console.log('isChecked changed to %@'.fmt(isChecked)); 
    }.observes('isChecked') 
});​ 
+3

この場合、チェックされた値は1つだけ返されます。wt。..すべてのチェックされたオプションを一度に取得する必要がありますか? – user1338121

0

わかりましたので、これはちょっと古いですが、私をそれにもつまずいた。私は配列のルートモデルにチェックボックスオプションを渡しました。問題は実際に双方向バインディングを達成することです(これが目標の場合)。これは私がそれをやった方法です:

App.ItemEditController = Ember.ObjectController.extend({ 
isRound: function() { 
    return (this.get('model.shapes').find(function(item) { return (item === 'round') })); 
}.property('model.shapes'), 
isOval: function() { 
    return (this.get('model.shapes').find(function(item) { return (item === 'oval') })); 
}.property('model.shapes'), 
isIrregular: function() { 
    return (this.get('model.shapes').find(function(item) { return (item === 'irregular') })); 
}.property('model.shapes'), 
shapes: function() { 
    var self = this; 
    ['round','oval','irregular'].map(function(item) { 
     var shapes = self.get('model.shapes'); 
     shapes = shapes.toArray(); 
     if (self.get('is' + item.capitalize())) { 
      if (shapes.indexOf(item) < 0) 
       shapes.push(item); 
     } else { 
      if (shapes.indexOf(item) >= 0) 
       shapes.splice(shapes.indexOf(item),1); 
     } 
     self.set('model.shapes', shapes); 
    }); 
}.observes('isRound', 'isOval', 'isIrregular') 
}); 

だからここに私は、モデルの形状配列におけるそれらの存在に基づいて自分自身を設定し、モデルの形状の配列をリセットするためにこれらのプロパティをチェックするオブザーバを設定するためのプロパティの設定をしましたもし必要なら。

Shapes: 
{{#each shape in this.shapes}} 
    <span class="label label-default">{{shape}}</span><br /> 
{{else}} 
    No shape selected! 
{{/each}} 

、我々は編集コントローラのプロパティにバインドItemEditテンプレートで:

Shapes: 
Round: {{input type="checkbox" checked=isRound}} 
Oval: {{input type="checkbox" checked=isOval}} 
Irregular: {{input type="checkbox" checked=isIrregular}} 

希望我々は常に(あなたがしかし)そうであるように、我々は形状と結合することができる項目テンプレートで今すぐ このタイプの手作業による双方向バインドに苦労している人は誰でも手助けをすることができます。一度にモデル内のすべてのチェックされたオプションを取得できます。

関連する問題