Я разрабатываю веб-приложение jQuery Backbone.js.
Как и в Adobe Flex, я реализовал привязку данных в двух направлениях в моем приложении для
входные элементы/виджеты.
Таким образом, каждый элемент ввода/виджет знает свою соответствующую модель и имя атрибута модели.
Когда пользователь нажимает вкладку или вводит, значение поля автоматически присваивается модели.
container.model.set(this.attrName, this.value, options); // command 1
В другом направлении, когда модель обновляется из бэкэнд, вид элемент ввода/виджет должен автоматически получать обновление:
container.model.bind("change:"+ this.attrName, this.updateView, this); // command 2
Проблема заключается в следующем:
Когда пользователь нажимает Enter, и модель автоматически обновляется, также "change: abc"
triggered и this.updateView вызывается не только тогда, когда новая модель
бэкенд.
Мое решение до сих пор состояло в том, чтобы передать параметр "source: gui" при установке значения модели при нажатии пользователем (команда 1) и проверке этого в моем методе updateView. Но я больше не довольствуюсь этим решением.
Есть ли у кого-нибудь лучшее решение?
Большое спасибо заблаговременно
Вольфганг
Обновление:
Когда опция silent: true передается, метод проверки модели не вызывается, поэтому
это не помогает. См. Источник Backbone.js 0.9.2:
_validate: function(attrs, options) {
if (options.silent || !this.validate) return true;