Не злоупотребляю ли я подключаемым модулем сопоставления Knockout, всегда используя его для моей модели просмотра?

Я все еще изучаю правильное использование Knockout, и я быстро ухожу от того, чтобы когда-либо вводить ko.observable при настройке мою модель просмотра, а вместо этого просто определяю литерал объекта и передавая его через плагин сопоставления с чем-то вроде

var viewModel = ko.mapping.fromJS(data);

или, по крайней мере, чем-то вроде вставки всех моих данных в атрибут на viewModel, например

var viewModel = { 
    ... events etc ... , 
    "data": ko.mapping.fromJS(data)
}

честно говоря, основная причина, по которой я это делаю, - это избавиться от необходимости многократно набирать ko.observable и ko.observableArray . Я просто пытаюсь понять, является ли это хорошим подходом и есть ли какие-либо недостатки в отказе от конкретного объявления var x = ko.observable () целиком. Кроме того, я делаю все это при загрузке, а не в ответ на какой-либо вызов ajax и т. Д., Что, насколько я могу судить, является тем, для чего был разработан плагин сопоставления.

В своей работе с нокаутом вы по-прежнему объявляете наблюдаемые вручную, одну за другой, или вы выбрали метод mapping.fromJS, который я использую? Есть ли какие-то особые недостатки в таком частом использовании модуля сопоставления?

Редактировать:

Конкретный пример

В этой статье Стив настраивает свой viewModel, выполнив

var initialData = [ { ... } , { ... } ]; // json from the serializer
var viewModel = {
    gifts : ko.observableArray(initialData)
};

Обычно я бы просто использовал ko.mapping.fromJS и для этой ситуации, в частности, чтобы убедиться, что объекты в массиве также превращаются в наблюдаемые. Глядя на то, что он сделал, мой подход кажется излишним и добавляет немного ненужных накладных расходов.

56
задан Jonathan S. 3 January 2013 в 14:37
поделиться