Я заметил, что, когда речь идет о нескольких моделях представления в knockout.js, обычно возникает некоторая путаница.
Документация ko на самом деле не очень подробно объясняет, как работать с несколькими моделями представления, как взаимодействовать между ними и когда их следует учитывать.
Я нашел этот сайт объясняя различные способы создания нескольких моделей представлений и способы взаимодействия с ними.
Я попробовал и создал мастер-модель с разными подмоделями:
var MasterModel = function(){
this.orders = new ordersViewModel(),
this.dates = new datesViewModel(),
this.equipment = new equipmentViewModel();
};
После этого мне пришлось использовать with: nameOfModel
во многих местах (и создавать для него дополнительные оболочки или HTML-комментарии) или даже просто использовать имя модели представления в качестве префикса data-bind="foreach: orders.getList()"
.
Кроме того, у нас есть проблема связи между ними, и хотя ее можно каким-то образом решить, она не кажется такой простой, как при работе с одной моделью представления.
У меня вопрос: стоит ли создавать несколько моделей представления? Если да, то когда? Кажется, это только добавляет сложности, и я не вижу в этом преимуществ. (да, они говорят, что он поддерживает модульность ... но я не вижу явного преимущества)