2013-03-25 18 views
9

Mam model z właściwością image_id. Mam widok dla tego modelu, który zawiera element obrazu. Muszę wstawić identyfikator do elementu obrazka src własności do ukończenia URL obrazu tak, że ja faktycznie to robi:Wstawianie właściwości modelu do adresu URL elementu Img w Ember

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

Moja pierwsza próba użył Kierownice pomocnika:

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

ale to również Metamprph wstawione znaczniki skryptów wokół niego:

<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> 

Więc szukałem w użyciu bindAttr jednak jak trzeba przekształcić wartość image_id (przez dodanie i dołączenie reszty ścieżki), nie wydaje się to również rozwiązaniem.

Odpowiedz

16

Istnieją 2 możliwości:

1- zadeklarować ścieżkę obrazu jako obliczonej własności modelu. Jeśli nie podoba ci się, że można go również zadeklarować w ObjectController podporowego ten szablon:

Szablon:

// 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> 

Model:

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

2- Jeśli nie potrzebujesz powiązania w 1 (domyślam się, że twój id nie ulegnie zmianie) i użyjesz unbound helper, co nie spowoduje tagów skryptu:

<img src="news{{unbound newsItem.imageID}}.jpg"></img> 
+3

Uwaga dla użytkowników 1.0.0: powinieneś teraz napisać '{{bind-attr src = newsItem.imagePath}}'. –

+0

Dobra wskazówka. Zaktualizowałem go odpowiednio :-) – mavilein

+0

Zostawiłeś cytaty (które są również przestarzałe). Zobacz http://emberjs.com/blog/2013/08/29/ember-1-0-rc8.html (Bound Helpers). –

1

Możesz uczynić odniesienie bindAttr obliczoną właściwością i zbudować tam swój ciąg znaków.

Powiązane problemy