Магистраль, выборочно отображать части в шаблоне - PullRequest
1 голос
/ 01 сентября 2011

Я перечисляю продукты в виде строк таблицы, каждая строка содержит поля ввода для указания количества продуктов.

Я сделал для этого скрипку, http://jsfiddle.net/kroofy/4jTa8/19/

Как видитепосле ввода в поле Qty вся строка снова отображается.И из-за этого фокус поля ввода будет потерян, что не очень хорошо, если вы хотите ввести более одной цифры или табуляцию между полями ввода.

Что было бы наиболее элегантным способом решения?это?

Ответы [ 2 ]

4 голосов
/ 01 сентября 2011

Я бы справился с этим, установив model.set({qty: _qty}, {silent: true}), а затем обновив поля без ввода с помощью this.$.

В качестве альтернативы тихой обработке: вместо прослушивания change событий прослушивайте change:qty и change:sellPrice и используйте метод, который обновляет только тот HTML-код, который необходимо обновить в this.$, а не повторно рендеринг объекта DOM и нарушение фокуса.

В любом случае, ваш комментарий о «выборочном обновлении» на скрипке, безусловно, правильный путь.

(this.$ - это основной хак для jQuery, который ограничивает все селекторы для поиска только в DOM элемента View. Элемент даже не нуждается в ID или классе; ему просто нужно существовать, а View поддерживает справиться с этим. Это невероятно полезно.)

2 голосов
/ 01 сентября 2011

Я создал плагин для магистрали под названием Backbone.ModelBinding, который может помочь в этой ситуации.Мой плагин позволяет вам обновлять части представления данными из модели, когда модель меняется.

Я разветвил / обновил вашу скрипку, чтобы показать ее в действии: http://jsfiddle.net/derickbailey/FEcyF/6/

я удалил привязку к изменению модели.я также добавил id атрибуты для ввода формы, чтобы облегчить плагин (хотя атрибут, который использует плагин, настраивается).и наконец, я добавил атрибут data-bind к общей цене продажи td.

вы можете получить плагин здесь: http://github.com/derickbailey/backbone.modelbinding/

надеюсь, что это поможет

FWIW: мой плагин - это автоматическая версия того, что предлагает Эльф.Я написал код в точности так, как он описывает, много раз, откуда и появился плагин.Я просто устал писать этот код от руки:)

...