Ember.js и handlebars каждый хелпер с подпредставлениями

Я пытаюсь использовать помощник представления внутри моих блоков шаблона {{#each}} без использования глобальных путей (мои контроллеры создают и уничтожают свои собственные представления).

Примеры. Учитывая представление со свойством массива myList и дочернее представление itemButton:

Это будет работать



Это не будет:


Я не могу получить доступ к родительскому представлению из каждого помощника представления (или на самом деле получить доступ ко всему, кроме свойств итерируемых объектов).

Хитрые обходные пути, которые я придумал:

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

или

  1. Создание collectionView в App.myListView
  2. Создайте представление itemViewClass в этом классе представления коллекции
  3. Переместите представление itemButton внутрь itemViewClass
  4. Замените {{#each}} на {{# collection}}

или

  • Создайте пользовательский помощник handlebars для итерации.

Оба этих варианта кажутся ужасными.Конечно, есть лучшая альтернатива, чем создание 2 новых классов (и вложение 4 представлений в глубину) только для перебора списка. Есть ли помощник по замене руля, которого я могу использовать вместо него?


Реализации обходного пути

Вариант №1: изменение массива контента

http://jsfiddle.net/FQEZq/3/ Недостатки: необходимость добавлять представление к каждому экземпляру модели только для итерации.

Вариант №2: Пользовательский вид коллекции

http://jsfiddle.net/ST24Y/1/ Недостатки: Теперь у вас есть два дополнительных вида, которые вам не нужны/не нужны, и меньше контроля над разметкой. Для ссылок из дочернего представления на родительский экземпляр теперь требуется parentView.parentView.parentView.

7
задан Ry- 20 March 2012 в 15:50
поделиться