В шаблонах Ember.js, как распечатать свойство модели, которое будет использоваться HTML, как src для изображения или href для ссылки
Использование:
- ember: v1.0.0-pre.4
- ember-data: версия 11
- handlebars: 1.0.rc2
Итак, у меня есть шаблон, который я подключил к контроллеру, который получает информацию от REST API. Просто напечатайте текст, это прекрасно, но это выражение руля...
<img src="{{ imageUrl }}"/>
... при вставке в dom выглядят следующим образом:
<img src="<script id='metamorph-28-start' type='text/x-placeholder'></script>http://asdf.com/image.jpg<script id='metamorph-28-end' type='text/x-placeholder'></script>">
Я, очевидно, очень новичок в Ember.js и Handlebars.
Я попытался выполнить поиск "рендеринга URL-адресов в шаблонах ember" и "распечатать html в шаблонах уэльских усов". Ack, вероятно, очевидно, но я пропустил его.
Ответы
Ответ 1
попробуйте следующее:
<img {{bind-attr src="imageUrl"}} />
но вы можете иметь не один атрибут, например:
<img {{bind-attr src="imageUrl" alt="imageTitle"}}>
вот документ: http://emberjs.com/api/classes/Ember.Handlebars.helpers.html#method_bind-attr
также может быть полезна в некоторых случаях, когда вам не нужна переменная, подлежащая привязке, вы можете использовать:
<img src="{{unbound imageUrl}}" />
Ссылка на документ: http://emberjs.com/api/classes/Ember.Handlebars.helpers.html#method_unbound
но первый метод, как правило, лучший.
Ответ 2
Принимая это немного дальше, чтобы ваши ноги были еще более влажными, мы можем фактически создать представление, представляющее изображение, и использовать его для добавления дополнительных функций.
Например, в следующем JSFiddle Я установил представление tagName
в img
(где его значение по умолчанию - div
), а затем добавил attributeBindings
для привязки атрибутов к представлению. В нашем случае мы хотим привязываться к атрибуту src
. Все, что нам нужно сделать, это указать атрибут src
как свойство представления и присвоить ему значение по умолчанию - в этом примере Google.
Поэтому представление работает так, как ожидалось: мы отобразили изображение как часть представления.
Однако, сделав еще один шаг, мы теперь можем легко изменить атрибут src
с помощью метода .set()
. В волшебном событии click
, которое вызывается, когда пользователь нажимает на представление в DOM (попробуйте сами, нажав на логотип Google в JSFiddle!), Атрибут src
изменен с логотипа Google на логотип Yahoo. Поскольку мы наблюдаем атрибут src
от attributeBindings
, это обновление, как только мы вызываем:
this.set('src', 'http://l.yimg.com/dh/ap/default/120910/yahoo_logo_br.png');
Полный код просмотра в случае, если JSFiddle исчезает:
App.ImageView = Ember.View.extend({
tagName: 'img',
attributeBindings: ['src'],
src: 'https://www.google.com/images/srpr/logo3w.png',
click: function() {
this.set('src', 'http://l.yimg.com/dh/ap/default/120910/yahoo_logo_br.png');
}
});