2013-04-18 1 views
12

devo una matrice osservabile:Come posso accedere a un oggetto per indice in un osservabile a eliminazione diretta?

var myObservableArray = ko.observableArray([ 
    { name: "Car", price: "9999" }, 
    { name: "Shoes", price: "20" }, 
    { name: "Paper", price: "1" } 
]); 

Sto cercando di accedere al prezzo del primo elemento dell'array.

<div data-bind="text: myObservableArray()[0]"></div> 

Displays:

[object Object] 

che ho provato:

<div data-bind="text: myObservableArray()[0].price"></div> 

Ma che solo restituisce un NULL.

Qual è la sintassi corretta per farlo?

Modifica: corretto un errore di copia e incolla indicato di seguito.

+0

Ecco come si fa. Se non funziona, hai qualche altro problema con il tuo codice. –

risposta

6

Oltre a utilizzare il nome di proprietà errato, developerexampledata anziché myObservableArray, il codice va bene.

Ecco un working fiddle

+0

Sì, quello era un errore di copia e incolla quando ho fatto la domanda, mia cattiva Apprezzo il violino però; almeno so di avere la sintassi giusta e il mio problema sta altrove. Accetterò la tua risposta e scaverò un po 'di più per capire dove potrei sbagliare. – Eric

1

Questo potrebbe essere semplicemente davanti a te tenta di accedere al primo elemento di un array prima che la matrice è stata popolata.

avvolgere il controllo dei dati-bind con una semplice istruzione if per verificare prima:

<!-- ko if: (myObservableArray().length > 0) --> 
    <div data-bind="text: myObservableArray()[0].price"></div> 
<!-- /ko -->