2013-02-19 2 views
0

Я использую этот учебник knockoutjs для преобразования массива в наблюдаемый массив. http://knockoutjs.com/documentation/observableArrays.html. Но данная следующая строка дает мне массив нулевой длины.Knockoutjs не преобразовывает массив в наблюдаемый массив?

var anotherObservableArray = ko.observableArray([ 
    { name: "Bungle", type: "Bear" }, 
    { name: "George", type: "Hippo" }, 
    { name: "Zippy", type: "Unknown" } 
]); 

Почему anotherObservableArray не работает?

+2

Как вы к нему доступ, чтобы получить массив нулевой длины? anotherObservableArray(). length должен работать – ryadavilli

+0

Yup Спасибо .. Я думал о массиве js – user960567

ответ

3

Вы должны получить доступ к базовому массиву для длины, а не для наблюдаемого массива.
anotherObservableArray().length предоставит вам надлежащую длину.

Проверить эту скрипку: http://jsfiddle.net/jfSG8/

2

Вы не сказали нам, как вы используете var anotherObservableArray, но должно работать:

<ul data-bind="foreach: anotherObservableArray"> 
    <li data-bind="text: name"></li> 
</ul> 

С нокаута/JS:

var viewModel = function() { 
    this.anotherObservableArray = ko.observableArray([ 
    { name: "Bungle", type: "Bear" }, 
    { name: "George", type: "Hippo" }, 
    { name: "Zippy", type: "Unknown" } 
    ]); 
}; 

ko.applyBindings(new viewModel()); 

См this jsfdiddle.

Обратите внимание, что я не использую var для хранения наблюдаемого массива, а вместо этого создаю его как свойство в модели представления.

Смежные вопросы