Sto appena iniziando a giocare con la libreria ember.js per vedere di cosa si tratta. Voglio visualizzare una tabella di dati e, a destra di ogni riga, avere un pulsante di cancellazione per eliminare quell'elemento dalla tabella. Non ho idea di come farlo però.azioni specifiche dell'oggetto nelle viste collezione ember.js
Nota, ho anche provato a creare una vista figlio (ItemView) e usarlo in linea all'interno della sezione {{#each ...}} ... {{/ each}}, ma ember.js si lamenta di aspettarsi una classe vista invece di ItemView, anche se ItemView è definito utilizzando Ember.View.create. Vorrei anche sapere perché non funziona. Anche il codice di esempio per l'utilizzo di una vista secondaria in un blocco #each nella documentazione non funziona.
Anche se potessi dichiarare una vista secondaria denominata ItemView per il rendering di ogni singolo elemento, non saprei ancora come ottenere l'azione removeItem di quella determinata vista per sapere quale elemento rimuovere dalla raccolta itemsController. Esiste una proprietà della vista per recuperare l'istanza Item a cui è associata la vista figlio in una raccolta?
Ecco la parte del mio modello di vista che ha l'elenco:
{{#each App.itemsController}}
<tr>
<td>{{itemName}}</td>
<td><a href="#" {{action "removeItem" on="click"}}>Delete</a></td>
</tr>
{{/each}}
Ed ecco il mio javascript:
window.App = Ember.Application.create();
window.App.Item = Ember.Object.extend({
itemName: "defaultItemName"
});
window.App.itemsController = Ember.ArrayProxy.create({
content: []
});
window.App.ListView = Ember.View.create({
templateName: 'listView',
removeItem: function (event) {
// ??? How do I figure out what item
// the user wanted to remove?
}
});
OK, quando provo questo metodo, il motore di template sembra ignorare qualsiasi
ok, andando a rispondere a questa domanda. il problema del modello sembra essere un problema separato. Grazie –
@JeremyBell re: i tag mancanti, hai circondato il blocco {{#each}} con un tag '
Non sono sicuro se questo il modo migliore, ma ho messo il item index o item name come proprietà del tag e quindi usa jQuery per recuperarlo.
Spero che questo aiuti.
fonte
2012-02-06 23:25:14 Veebs
Grazie a T om Whatmore fiddle ho trovato risposta alla stessa domanda.
Dopo aver letto trek intro, anziché
personBinding="this"
, preferisco utilizzare{{action removeItem person}}
per indicare esplicitamente l'oggetto su cui deve essere eseguita l'azione.Nella vista userei
var person = evt.context;
per ottenere persona oggetto.Si può giocare con questo violino jsfiddle.net/67GQb/127
fonte
2012-12-23 09:59:55 penkovsky
Secondo [ Documentazione ArrayController] (http://emberjs.com/api/classes/Ember.ArrayController.html), è consigliabile utilizzare ArrayController anziché ArrayProxy perché concettualmente è un controller. – penkovsky
Problemi correlati