Использовать геттеры во ViewModel вместо подписки на модель
На этой неделе я узнаю, что мы можем использовать геттеры / сеттеры в javascript. Поэтому я попытался использовать его в своем текущем коде.
На данный момент моя ViewModel регистрируется в модели, чтобы получать уведомления об изменении модели.
Используя геттеры, я могу получить RID этого и просто вернуть значение поля в модели в viewModel.
например:
Model = {
field: aValue
}
ViewModel = {}
Object.defineProperty(ViewModel , aField{
get: function () {
return Model.field;
});
}
});
Я прав? Это нормально?
1 ответ
SynchroDynamic дает хорошее представление о читабельности кода, а также о ползучей сложности, которая может возникнуть по мере развития вашей системы.
Предположительно, вы используете какой-то фреймворк, который предоставляет механизм для привязки данных. Привязка данных обычно представляет собой автоматический процесс, основанный на событиях изменения. Для двусторонней привязки источник и цель связанной пары должны инициировать события, если данные изменяются, а источник и цель также должны реагировать на эти события (регистрируясь для них), чтобы данные оставались синхронизированными.
Am I right?
Да, вы правы, что вы можете (в том смысле, что это возможно) использовать get / set и т. Д. И отключить механизмы привязки данных фреймворков.
is it ok?
Вероятно, нет, во всех, кроме самых тривиальных случаев.
1) Если вы используете платформу, которая поддерживает привязку данных, другие читатели вашего кода будут озадачены тем, почему вы выбрали такой подход, когда доступен совершенно хороший (и задокументированный) механизм.
2) Как указывает SynchroDynamic, вещи быстро выйдут из-под контроля, когда количество представлений и моделей представления увеличится, и вам придется вручную отслеживать получение / наборы.
3) Модульное тестирование также может стать намного сложнее!