2012-04-30 12 views

Odpowiedz

10

Bind na własność Ember.Checkboxchecked patrz http://jsfiddle.net/5pnVg/:

Kierownice:

{{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

cóż, to zwraca tylko jedną sprawdzoną wartość w prawo, wt Jeśli ... musimy uzyskać wszystkie zaznaczone opcje naraz? – user1338121

0

Ok, więc to jest trochę stary, ale ja natknęliśmy się na to też. Dostałem moje opcje pól wyboru dostarczone do modelu trasy w tablicy. Problem polega na osiągnięciu dwukierunkowego wiązania (jeśli jest to cel). W ten sposób robiłem go:

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') 
}); 

Więc tutaj mam ustawić właściwości, aby ustawić się na podstawie ich obecności w kształty tablicy modelki i ustawić obserwatora, który sprawdza te właściwości resetuje kształtów tablicę modelki Jeśli wymagane. Teraz w szablonie pozycji możemy wiązać się z kształtami jak zawsze (jednak to zrobić):

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

i w szablonie ItemEdit łączymy się właściwości sterownika edytuj za:

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

Nadzieja Pomaga to każdemu, kto zmaga się z tego typu ręcznym wiązaniem dwustronnym, a za jednym razem otrzymasz wszystkie sprawdzone opcje w swoim modelu.