Добрый день!
Допустим, на страницу выводится список каких-либо объектов, пусть это будут комменты. Рядом с каждым комментом стоит ссылка "Редактировать", при нажатии на нее появляется инлайновая (текст коммента заменяется на textarea) форма редактирования коммента. То есть у каждого коммента есть состояние: show — коммент просто отображается, edit — коммент редактируется (текст коммента скрыт, но отображается форма редактирования). Нажатие на ссылку переключает это состояние, а отображение формы/текста коммента зависит от `comment.state`. Где хранить это состояние? Моделей ведь у нас нету, да и хранить это в модели как-то не очень. Для получения комментов используется ngResource — значит надо расширять ресурс методами для работы с состояниями интерфейса? Сейчас я так и делаю:
var Comment = $resource(...);
angular.extend(Comment.prototype, {
state: 'show',
edit() {
this.state = 'edit';
},
show() {
this.state = 'show';
},
isShown() {
return this.state === 'show';
},
isEdited() {
return this.state === 'edit';
}
});
Но что-то не нравится такой подход. Хранить в контроллере (ведь контроллер в Ангуляре — это ViewModel)? Хз, как это сделать, ведь каждый коммент должен знать о себе, в каком состоянии он находится.
Как вы решаете такую задачу и где храните состояния интерфейса?