2012-07-04 5 views
0

За последние несколько дней меня больше интересует Knockoutjs. Он выглядит очень многообещающим, потому что он моделирует MVVM-шаблон и WPF как привязки, но у меня есть некоторые сомнения, когда он приносит что-то полезное для веб-приложений без RIA (и когда я говорю RIA, я имею в виду сложный в приложениях браузера, скажем, ERP, так или иначе что-то более сложное, чем добавление нескольких строк в таблицу и их скрытие)KnockoutJS дублирующие данные накладные расходы

Предположим, у вас есть комбинированное поле с 10 элементами, и вам нужно создать на стороне клиента еще два элемента и сохранить их на сервер.

То, как я его вижу, вам нужно будет создать viewmodel с Obs. массив, заполненный 10 элементами, а также отображает 10 элементов внутри выпадающего списка (в виде 10 элементов).

В принципе, у вас будет 2 цикла в два раза больше коллекции предметов и рендеринга элементов в js viewmodel и combobox (варианты).

Теперь представьте, что у вас было бы 30 элементов управления, не имеющих информации о модели представления с нокаутом и html-элементах управления с предварительно заполненными данными.

+0

Если бы мой ответ был полезным, пожалуйста, примите его ... любые другие вопросы нокаута Я рад помочь. –

ответ

2

Каждая ситуация отличается, но я не думаю, что вам обычно нужно отображать эти параметры combobox, а также определять их в модели представления нокаута - нокаут будет создавать для вас HTML-варианты. У меня есть многочисленные выпадающие списки, заполненные таким образом в сложном графе объектов. Когда страница сначала загружает начальное состояние графа объекта, отображается на странице как литерал объекта, который затем передается в конструктор модели представления нокаута верхнего уровня, который создает всю структуру через плагин сопоставления (создание моделей детского просмотра и т. Д.).). Затем все сохранение и обновление выполняются с помощью небольших дискретных операций Ajax и переназначения с помощью плагина сопоставления.

+0

Сайт Knockout (который является одним из самых красивых, наиболее документированных и представленных сайтов библиотеки, с которыми я столкнулся - почему они не могут быть такими?) Имеет приятную демонстрацию различных привязок к HTML-контролю: http: // knockoutjs .com/examples/controlTypes.html –

+0

В моем контексте генерация HTML на стороне клиента Knockout резко сократила мои накладные расходы, позволив мне повторно использовать одни и те же метаданные в нескольких моделях просмотра - например, я вытаскиваю данные ссылочного поиска как JSON один раз в отдельный файл, который кэшируется, и он используется Knockout в качестве опций выбора, возможно, из 10 выбранных. Затем каждая модель просмотра сохраняет свой выбранный идентификатор элемента. Если страница, отображаемая с каждым выбором, предварительно заполненным одними и теми же элементами, она будет очень быстрой. –

+0

Одна проблема, которую я вижу с заполнением только модели представления, заключается в том, что combobox получит свои параметры только после полной загрузки страницы, я могу выбрать что-то, как только браузер отобразит элемент управления select. – Zapacila