Я пытаюсь сделать небольшой урон калькулятор для игры Diablo 3 (знаю, я знаю).Дублировать массив в Knockout.js
В принципе, идея состоит в том, что у нее есть массив значений «до» и «после», которые представляют элементы для вашего персонажа. Массив «после» должен дублировать массив «before», когда он обновляется. Однако изменения в массиве «после» должны не обновить массив «до».
В каждом массиве отображается итоговое значение DPS (более того, это лучше), и оно показывает разницу между ними. Идея заключается в том, что она позволяет легко сравнивать два предмета при использовании игрового аукционного дома.
У меня первый бит установлен - массив «до» работает отлично. Однако я не понимаю, как создать массив «after», и мне интересно, сделал ли я эту сложную сложность. Должен ли я использовать две модели представления, реплицируя их в jQuery или используя плагин сопоставления? Я не могу достаточно найти ничего, что это именно то, что я после этого, требования к UI особенно, кажется, немного мертвую точку
Скрипки, где я до: http://jsfiddle.net/kimadactyl/GuMuY/8/
Очевидно, вам нужны два разных массива. Массив 'after' является копией' before' (т. Е. Глубокой копии). Затем вам нужно определить пользовательскую привязку Knockout для массива 'before', который в update обновит массив' after'. И вы сделали! Постскриптум jbabey, definetly not me - Меня не волнует Diablo 3. :) – freakish
Спасибо - какой правильный способ сделать здесь глубокую копию? Те, которые я пробовал либо обновлять как в синхронизации, так и не работали должным образом. Когда вы говорите пользовательскую привязку, вы имеете в виду написать функцию класса? Я не слишком хорош в терминологии! Редактировать: я нашел страницу документов, спасибо, это именно то, что я искал! – kimadactyl
Когда я говорю «custom binding», я имею в виду это: http://knockoutjs.com/documentation/custom-bindings.html Что касается глубокой копии ... в вашем случае достаточно инициализировать 'new HeroItem (...) 'дважды в' HeroItem' и добавить один в 'before' и второй в' after'. – freakish