Я все еще изучаю правильное использование Knockout, и я обнаружил, что быстро убираюсь от когда-либо набрав ko.observable
при настройке моей модели просмотра и вместо этого просто определяя литерал объекта и передавая его через плагин сопоставления с чем-то вроде
var viewModel = ko.mapping.fromJS(data);
или, по крайней мере, что-то похожее на то, чтобы наполнить все мои данные атрибутом в представленииModel так
var viewModel = {
... events etc ... ,
"data": ko.mapping.fromJS(data)
}
Если честно, основной причиной, по которой я это делаю, является необходимость повторного ввода ko.observable
и ko.observableArray
. Я просто пытаюсь выяснить, является ли это хорошим подходом, и если есть какие-либо недостатки, чтобы скрыть конкретное объявление var x = ko.observable()
все вместе. Кроме того, я делаю все это при загрузке, а не в ответ на любой вызов ajax и т.д., Который из того, что я могу сказать, является тем, для которого был создан плагин сопоставления.
В своей работе с нокаутом вы все равно объявляете наблюдаемые вручную, один за другим, или вы ушли с использованием метода mapping.fromJS, который я использую? Существуют ли какие-либо конкретные недостатки для использования плагина отображения так часто, как это?
Edit:
Конкретный пример
В этой статье Стив создает свой режим просмотра, делая
var initialData = [ { ... } , { ... } ]; // json from the serializer
var viewModel = {
gifts : ko.observableArray(initialData)
};
Обычно я просто использовал ko.mapping.fromJS
для этой ситуации, в частности, чтобы убедиться, что объекты в массиве также превращаются в наблюдаемые. Глядя на то, что он сделал, мой подход кажется его излишеством и добавляет немного лишних накладных расходов.