2014-02-28 3 views
0

Мой наблюдаемый массив имеет две строки (элементы?), Строка [0] имеет pid = 2; row [1] имеет pid = 3.Почему моя вычислительная функция не добавляется к каждому элементу в моем наблюдаемом массиве нокаута?

Я пытаюсь добавить поле в наблюдаемый массив, называемый cartItems. Это должно быть похоже на добавление столбца в электронную таблицу Excel или в математическую матрицу.

Следующий код не вызывает каких-либо ошибок, но и не вычисляет значение self.myTest (i5 всегда получает ответ по умолчанию ноль .. Почему?

self.cartItems = ko.mapping.fromJS(cartItems); 

    self.myTest = ko.computed(function(){ 
     var ans =0; 
     ko.utils.arrayForEach(self.cartItems, function(item) { 
     ans = ko.utils.unwrapObservable(item.pid()); 
    }); 
    return "myTest="+ans; 
},self); 
+0

Есть ли шанс, что вы можете собрать пример jsfiddle? – Joe

+0

Joe-- Я пытаюсь создать скрипку. Я начал с копирования того, что сделал Иван, в новую скрипку. это не исполнилось для меня. Я думаю, что мне нужно добавить внешний ресурс knockout.mappint-latest-debug.js, но не знаю, как это сделать. Кнопка «плюс» ничего мне не говорит. Вы можете посоветовать? –

ответ

2

Попробуйте использовать ko.utils.arrayForEach(self.cartItems(), ... вместо ko.utils.arrayForEach(self.cartItems, .... (с ()) Fiddle

Update:..
Посмотрите на обновленный Fiddle, чтобы решить вашу проблему с вешать добавить новое свойство ро w (позиция).

+0

Убейте меня на 2 минуты :) – Joe

+1

В вашем массиве скрипта не наблюдается, поэтому нет причин добавлять '()' (execute) в 'self.cartItems' и' item.pid', и он работает хорошо. Но если я правильно понимаю вопрос («Я пытаюсь добавить поле к наблюдаемому массиву») - массив должен быть наблюдаемым. :) –

+0

Я новичок в этом материале и поэтому не совсем понимаю ваши комментарии. –

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