2013-06-25 8 views
8

Ho una vista Ember.Seleziona, in che modo aggiungere/associare un attributo disabilitato al tag dell'opzione (NON all'intera casella di selezione).Come aggiungere l'attributo "Disabilitato" alle opzioni in Ember.Seleziona

ie, mi piacerebbe realizzare il seguente risultato.

<select> 
    <option value="1" disabled>I am a disabled option</option> 
    <option value="2">Im selectable</option> 
</select> 
+0

Fa questo help..http: //stackoverflow.com/questions/11457206/emberjs-how-to-disable-ember-select – PSL

+0

No purtroppo, che disabilita l'intera casella di selezione. Voglio disabilitare solo alcune delle opzioni all'interno della casella di selezione. – jennas

risposta

13

La vista Ember.Select non lo fa, fuori dalla scatola. Sarà necessario aggiungere un binding dell'attributo personalizzato per disabled e una proprietà calcolata corrispondente per indicare a Ember come trovarlo.

Un approccio semplice consiste nell'aggiungere l'attributo disabilitato sul contenuto/elemento dati utilizzato per il rendering della selezione.

App.ApplicationController = Ember.Controller.extend({ 
    choices: function() { 
    return [ 
     Ember.Object.create({firstName: "Lorem", id: 1}), 
     Ember.Object.create({firstName: "Ipsum", id: 2, disabled: true}), 
     Ember.Object.create({firstName: "Dolor", id: 3}), 
     Ember.Object.create({firstName: "Sit", id: 4}), 
     Ember.Object.create({firstName: "Amet", id: 5}) 
    ]; 
    }.property() 
}); 

e riaprire o estendere la vista Ember.SelectOption aggiungendo l'attributo disabled e proprietà calcolata.

Ember.SelectOption.reopen({ 
    attributeBindings: ['value', 'selected', 'disabled'], 

    disabled: function() { 
    var content = this.get('content'); 
    return content.disabled || false; 
    }.property('content'), 

}); 

Ecco un lavoro jsbin. Si noti che l'opzione ipsum è disabilitata.

+0

Grazie. Spero che questo passi nel nucleo un giorno;) – jennas

+0

Mi piace questo approccio, ma non so come passare in attributi dati che richiedono nomi con trattino? – sbauch

+0

Ho usato '.property ('content.disabled')' piuttosto che .'property ('content') ', ma altrimenti funziona bene. – sblair

2

È possibile gestire in didInsertElement anello nelle visualizzazione personalizzata Ember.Select ..

didInsertElement: function() { 
    this.$('option[value="1"]').attr('disabled', true); 
} 
+1

non proprio il modo brace. dovresti essere invece attributi manubri vincolanti per i tuoi dati. –

Problemi correlati