9

我有一个带有image_id属性的模型。我有一个包含图像元素的模型视图。我需要将 id 插入图像元素的src属性中以完成图像的 URL,以便我有效地执行此操作:

<img src="news + newsItem.imageID + .jpg"></img> 

我的第一次尝试使用了 Handlebars 助手:

<img src="news{{newsImageURL newsItem.imageID}}.jpg"></img> 

但这也在它周围插入了 Metamprph 脚本标签:

<img url="&lt;script id='metamorph-10-start' type='text/x-placeholder'&gt;&lt;/script&gt;news/7.jpg&lt;script id='metamorph-10-end' type='text/x-placeholder'&gt;&lt;/script&gt;" alt="" class="content-image news-media" /></a>

所以我看过 using bindAttr,但是因为我需要转换 image_id 值(通过预先和附加路径的其余部分),这似乎也不是一个解决方案。

4

2 回答 2

16

有2种可能:

1-将图像路径声明为模型上的计算属性。如果您不喜欢这样,您也可以在支持此模板的 ObjectController 中声明它:

模板:

// until 1.0 RC7
<img {{bindAttr src="newsItem.imagePath"}}></img> 
// from 1.0 final (the above one is deprecated)
<img {{bind-attr src=newsItem.imagePath}}></img> 

该模型:

App.NewsItem = DS.Model.extend({
  imageID: DS.attr('string'),
  imagePath: function() {
    return "/assets/news/"+this.get("imageID")+".jpg";
  }.property('imageID')
});

2-如果您不需要 1 中的绑定(我猜您的 id 不会改变)并使用 unbound helper,这不会导致脚本标签:

<img src="news{{unbound newsItem.imageID}}.jpg"></img> 
于 2013-03-25T21:02:02.607 回答
1

您可以让 bindAttr 引用一个计算属性并在那里构建您的字符串。

于 2013-03-25T20:57:59.293 回答