Knockoutjs array.length делает весь javascript прекращением работы

55
6

Я изучаю knokcout.js

Я использовал этот пример в http://www.knockmeout.net/2011/04/utility-functions-in-knockoutjs.html, который отлично работает.

Я добавил следующее в javascript.

viewModel.breads = ko.dependentObservable(function() {

return ko.utils.arrayFilter(this.items(), function(item) {
return item.category()=='Bread';
});

}, viewModel);

Он работал.

Затем я добавил следующее

viewModel.breadsLength = ko.dependentObservable(function() {

var filtered_array= ko.utils.arrayFilter(this.items(), function(item) {
return item.category()=='Bread';
});

return filtered_array().length;

}, viewModel);

Это приводит к сбою всего javascript. Я попробовал filtered_array.length(), filtered_array().length(), this.breads.length() и т.д. Мне не удалось заставить его работать.

Отображение длины массива с помощью data-bind="text: breads().length" работает только один раз и, кажется, не обновляется всякий раз, когда я использую новый json.

спросил(а) 2012-04-03T21:52:00+04:00 8 лет, 3 месяца назад
1
Решение
78

В этом случае вы просто хотите сделать: filtered_array.length. Результат ko.utils.arrayFilter - это нормальный массив, и вы будете проверять его свойство length (которое не является наблюдаемым).

ответил(а) 2012-04-03T22:55:00+04:00 8 лет, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема