2012-04-30 12 views

risposta

10

legarsi al checked proprietà di Ember.Checkbox, vedere http://jsfiddle.net/5pnVg/:

Manubrio:

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

beh, questo restituisce solo un singolo valore verificato a destra, wt Se .. dobbiamo ottenere tutte le opzioni selezionate in una volta? – user1338121

0

Okay, quindi questo è un pò vecchio, ma io inciampato su questo anche. Ho avuto le mie opzioni di checkbox consegnate al modello del percorso in un array. Il problema è in realtà con il raggiungimento di un legame bidirezionale (se questo è l'obiettivo). Questo è come ho fatto:

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

Così qui ho installato le proprietà di porsi in base alla loro presenza in serie forme del modello e impostare un osservatore che controlla queste proprietà per reimposta gamma di forme del modello se necessario. Ora, nel modello di elemento che può legarsi a forme come facciamo sempre (ma si fa):

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

e nel modello ItemEdit ci legano alle proprietà del controller di modifica:

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

Speranza questo aiuta con chiunque abbia difficoltà con questo tipo di rilegatura manuale a due vie e avrai tutte le opzioni selezionate nel tuo modello in un colpo solo.