Как получить доступ к переменным в пользовательских элементах в Aurelia?

У меня есть пользовательский элемент на моей странице, и мне нужно получить доступ к переменной в app.js из пользовательского элемента. Единственный способ привязать данные, которые мне нужны, к пользовательскому элементу?

<custom-element data.bind="data"></custom-element>

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


person seroth    schedule 26.04.2016    source источник
comment
пользовательские элементы не имеют доступа к внешней области. Так что я бы сказал нет. Вы можете визуализировать свои пользовательские элементы, используя ‹compose›‹/compose›, который имеет доступ к внешней области видимости.   -  person Fabio Luz    schedule 26.04.2016
comment
Ба, я не хотел этого делать. подписка работает? Я понятия не имею, как это сделать, но я видел кое-что об этом в документации сайта Aurelia.\   -  person seroth    schedule 26.04.2016
comment
Это зависит от того, что вы хотите сделать, но я думаю, что связывание каждого из элементов - правильный способ сделать это.   -  person Fabio Luz    schedule 26.04.2016
comment
Использование системы привязки данных, вероятно, является правильным способом, но если бы вы могли создать суть с немного более подробной информацией, мы могли бы предоставить более целенаправленную помощь. Вы можете начать здесь: gist.run/   -  person Ashley Grant    schedule 26.04.2016
comment
Все ответы указывают на то, что привязка, которую я делаю, - лучший способ. Я буду придерживаться этого. Спасибо за ответы.   -  person seroth    schedule 26.04.2016


Ответы (1)


Шаблон пользовательского элемента не может получить доступ к внешней области. Это по дизайну. Это гарантирует переносимость пользовательских элементов. Это отражает то, как работают стандартные элементы, такие как <div>, <a> и т. д. Вы можете использовать эти элементы где угодно. Единственный способ передать им данные — через их атрибуты.

Если вы хотите тесно связать свой пользовательский элемент с моделью внешнего представления, вы можете сделать что-то вроде этого:

<custom-element app.bind="$this"></custom-element>

но это не рекомендуется

person Jeremy Danyow    schedule 26.04.2016
comment
Джереми, ты забыл добавить, но это не рекомендуется. - person Ashley Grant; 26.04.2016