2015-02-01 2 views
0

Я очень новичок в нокауте js и им было поручено добавить функциональность в корзину покупок. Я создал функцию для общей стоимости предметов в корзине, но она не работает (код выделен ниже).Создание общей функции стоимости в магазине нокаутов

Мой вопрос: как мне изменить эту функцию или создать новую, которая выводит общую стоимость предметов в корзине, и это изменяется, если элемент удален или изменяется количество элемента?

Вот код и краткое объяснение телеги:

http://jsfiddle.net/b4atrw2g/5/

Тележка имеет два основных раздела. В разделе «Добавить новый элемент» пользователь вводит имя, стоимость и количество элемента, затем нажимает «Добавить элемент».

Товар затем отображается в разделе «Товары в корзине» с указанием стоимости и количества. Пользователь по-прежнему может изменять количество товара, когда он находится в корзине.

Я создал функцию, называемую getTotalCost, но которая выводит общую стоимость элемента до его добавления в корзину и исчезает после добавления элемента в корзину.

Вот функция:

viewModel.getTotalCost = ko.pureComputed(function() 
 

 
    { 
 
    var total = 0; 
 
    total += viewModel.newItemPrice() * viewModel.newItemQuantity(); 
 
    return total; 
 
    }, 
 

 
    viewModel);

Спасибо заранее.

+0

Обязательно включать в себя все, что является минимально необходимым для воспроизведения проблемы, о которых вы спрашиваете * в * Ваш вопрос. – J0e3gan

+1

Благодарим вас за отзыв, @ J0e3gan. Я долго пытался решить этот вопрос, но это могло быть яснее. – bennyrags

ответ

0
viewModel.getTotalCost = ko.pureComputed(function() 
{ 
    var total = 0; 
    arr = viewModel.itemsInCart(); 
    for (i = 0; i< arr.length;i++) 
     total += arr[i].price * arr[i].quantity; 
    return total; 
} 

http://jsfiddle.net/b4atrw2g/6/

+0

благодарим вас за это @IAfanasov, это здорово, хотя мне все еще нужно, чтобы сумма изменилась, если или когда количество изменено в корзине. Это способ сделать это? – bennyrags

+0

Поздно, и я не обращаю внимания на это совпадение, извините (= Я думаю, вам нужно сделать наблюдаемый массив, содержащий наблюдаемые. – IAfanasov

+0

Нет проблем, это очень помогает, @IAfanasov. Я думаю, что у меня есть наблюдаемый массив, вот здесь: itemsInCart: ko.observableArray ([]) – bennyrags

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