Come gestire i tag in un modello Ember.js
-
28-10-2019 - |
Domanda
Ho un modello Ember.js che è fondamentalmente solo un ID, un titolo, un corpo e tag, in cui ogni tag ha un ID e un titolo. Ecco il json che sto nutrendo Ember dai binari:
{"created_at":"2012-02-19T03:28:26Z",
"body":"Example body",
"id":1,
"title":"Example title",
"updated_at":"2012-02-19T03:28:26Z"
"tags" :
{"id":1,
"name":"retweet"},
{"id":2,
"name":"twitter"},
{"id":3,
"name":"social"}
}
Domanda 1: come posso modellare i tag nel modello Ember.js? Dovrebbe esserci solo un campo "tag" che contiene una gamma JS di tag, o dovrebbe esserci un campo per ogni tag, quindi ci sarebbe tag1, tag2, tag3, ecc., In cui ogni campo ha una serie di ID e titolo?
Domanda 2: nei miei modelli di manubrio, come posso usare i tag per collegare ogni tag a /tags/{{tag.id}}?
Non posso semplicemente usare <a href="/tags/{{tag.id}}"></a>
Dal momento che non è possibile incorporare i valori del manubrio in un attributo del genere e non posso usare {{{BindAttr}} poiché non è possibile concaterare stringhe (mi piace /tag /) al valore. Questo mi lascia con una proprietà calcolata (che è il "modo giusto", secondo questo) per ogni tag (quindi la proprietà calcolata "tagurl" sarebbe solo restituito "/tag/" + tag.id
), ma non sono sicuro di come farlo perché non sono sicuro di come dovrebbero essere archiviati i tag (domanda 1 sopra).
Soluzione
Estendi una vista nel tuo codice:
App.tagView = Em.View.extend
templateName: "tTagView"
tagURL: (->
'/tag/" + @get('id')
).property()
Nel tuo manubrio fai questo
{{#each tags}}
{{view App.tagView content=this}}
{{/each}}
Avrai bisogno di un modello
<script id="tTagView" data-template-name='tTagView' type="text/x-handlebars">
<a {{bindAttr href="tagURL"}}>{{Name}}</a>
</script>
Ecco tutto che funziona in un violino:http://jsfiddle.net/herty/12/