2013-03-25 9 views
9

Ho un modello con una proprietà image_id. Ho una vista per quel modello che contiene un elemento immagine. Ho bisogno di inserire l'ID in proprietà dell'elemento immagine src per completare l'URL dell'immagine in modo che sto effettivamente facendo questo:Inserimento di una proprietà modello in un elemento URL Img in Ember

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

Il mio primo tentativo usato un aiutante Manubrio:

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

ma anche questo tag script inseriti Metamprph intorno ad esso:

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

Così ho guardato utilizzando bindAttr, tuttavia, come ho bisogno di trasformare il valore di image_id (anticipando e accodando il resto del percorso), anche questa non sembra una soluzione.

risposta

16

ci sono 2 possibilità:

1- Dichiarare il percorso dell'immagine come proprietà calcolata dal modello. Se non lo fai così, si potrebbe dichiararla anche nel vostro ObjectController sostenere questo modello:

Il Template:

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

Il Modello:

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

2- Se non è necessario il binding in 1 (credo che il tuo ID non cambierà) e utilizzare lo unbound helper, che non risulta nei tag script:

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

Nota per utenti 1.0.0: ora dovresti scrivere '{{bind-attr src = newsItem.imagePath}}'. –

+0

Buon suggerimento. L'ho aggiornato di conseguenza :-) – mavilein

+0

Hai lasciato le virgolette (che sono anche deprecate). Vedi http://emberjs.com/blog/2013/08/29/ember-1-0-rc8.html (Aiutanti associati). –

1

È possibile rendere bindAttr riferimento una proprietà calcolata e creare la stringa lì.