azproduction / rivets-backbone-adapter

Backbone.js adapter for Rivets.js data-bind with nested models and collections support
http://azproduction.github.io/rivets-backbone-adapter/example/index.html
MIT License
48 stars 15 forks source link

Adaptation to rivets 0.6.5 #1

Closed generalov closed 10 years ago

generalov commented 10 years ago

Changes:

  1. Now you need to use model:attribute notation instead of model.attribute - last is consumed by upstream to resolve object properties. Therefore you should to replace collection:cid bindings with collection.cid to. ^)
  2. Object methods should be explicitly bound in order to use them as on-* event handlers (which are inwoked in the context of <HTML*Element> now).
generalov commented 10 years ago

Да, кстати на https://github.com/mikeric/rivets/wiki/Adapters указан какой-то левый форк с затертой историей, по всем признакам сделанный на основе твоего кода.

azproduction commented 10 years ago

Спасибо огромное! Мы завфизились на старой версии риветса поэтому я не обновлял проект. Были ли какие-то сложности во время переезда?

generalov commented 10 years ago

раньше нужно было писать data-rv-...="model.attr" -- теперь rv-...="model:attr" и наоборот, где было data-rv-...="obj:prop" теперь -- rv-...="obj.prop"

короче, rivets теперь сам использует точку в качестве разделителя, поэтому синтаксис для доступа к атрибутам бекбоновских моделей и обычным свойствам джаваскриптовых объектов поменялся на противоположный.

еще неприятности возникли с биндингами вида rv-on-*="obj.method", т.к. раньше в обработчике можно было написать data-rv-on-click="this.чегоТоТам", имя ввиду что this при вызове будет obj и все работало.

теперь в роли this при вызове хендлера выступает dom-элемент, на котором случилось событие. поэтому если нужен другой this, методы нужно "биндить" к объекту заранее. проще всего в initialize() воспользоваться _.bindAll в самом rivets на этот случай прелагают заманкипатчить функцию вызова хендлера как нужно (через конфигурятор), но я не стал это делать, т.к. тогда поведение начинает расходиться с документацией. а у меня основная цель была сделать так, чтобы поведение и документация начали совпадать иначе какой-то кошмар :)

шаблоны обовил тупо регулярками. со вьхами, где названия свойств строились динамически, пришлось разбираться лапками. к счастью их оказалось чуть.

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

мне сейчас интересно, что такого полезного добавили в альтернативном форке, чего нет в твоем? смотрую на diff исходников, но сути содеянного не отражаю.

Вт. 10 дек. 2013 00:34:27, Mikhail Davydov писал:

Спасибо огромное! Мы завфизились на старой версии риветса поэтому я не обновлял проект. Были ли какие-то сложности во время переезда?

— Reply to this email directly or view it on GitHub https://github.com/azproduction/rivets-backbone-adapter/pull/1#issuecomment-30158605.

azproduction commented 10 years ago

Спасибо за рассказ. Мы так же попробуем переехать.

мне сейчас интересно, что такого полезного добавили в альтернативном форке, чего нет в твоем?

С виду копипаст. Напишу этому товарищу.