Come posso legano il testo selezionato di una casella di selezione per l'attributo di un oggetto con Knockout JS, o qualsiasi altra cosa?

StackOverflow https://stackoverflow.com/questions/4785481

Domanda

Ho un casella di selezione a tendina che sto popolando con una lista JSON tornato da una stored procedure, ma purtroppo quando aggiorno l'oggetto collegato ho bisogno di tornare selezionato testo della discesa , non l'indice selezionato come uno potrebbe pensare (progettazione di database poveri, ma mi sono bloccato con esso per ora e non posso cambiarlo).

Qualcuno ha qualche idea che cosa posso fare per mantenere il testo selezionato sincronizzati con l'attributo dell'oggetto JavaScript appropriata?

È stato utile?

Soluzione

Quindi sì, avete ottenuto quello che volevo arrivare. Utilizzare il testo come il valore per le opzioni di selezione piuttosto che utilizzando un indice. Il valore in realtà dovrebbe essere qualcosa di utile, non riesco a pensare a nessun caso in cui io abbia mai usato un indice. Un certo numero, ma un numero che si riferisce ai modelli dell'applicazione in qualche modo (come un ID da un database), non al numero di elementi nella casella di selezione.

Ben fatto.

Altri suggerimenti

Si potrebbe mantenere entrambi, il valore e il testo, se si utilizza abbonati. Per esempio, se ciascuno dei tuoi oggetti JavaScript simile a questa:

    var optionObject = {
       text:"text1"
       value: 1
    }

Allora il vostro legame sarà simile:

dove 'OptionsObjects' è una raccolta di optionObject e selectedOption ha due proprietà osservabili: il testo e valore. Infine ci si abbona alla proprietà valore del selectedOption:

    viewModel.selectedOption.value.subscribe(function(newValue){
        var optionText = viewModel.OptionsObjects[newValue].text;
        viewModel.selectedOption.text(optionText);
    });

Poi, se volete vedere il nuovo testo opzione selezionata quando il valore viene modificato, si potrebbe avere un legame come segue:

    <span data-bind:"text:selectedOption.text"></span>

Nel vostro caso particolare si potrebbe tornare selectedOption.text ().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top