Birçok Documents
ürününe sahip Category
modelim var. Bireysel bir Category
görüntülerken, documents
alt öğesinin tümünü sürükleyip bırakılabilir bir listede listelemek istiyorum. Ayrıca, bu belge için satır içi düzenlemeye izin vermek için herhangi bir kişiye document
çift tıklamak istiyorum.Emberjs - CollectionView ve ItemController öğelerini birlikte kullanın
Her iki parçanın da üzerinde çalışıyorum, ama onları nasıl birleştireceklerini anlayamıyorum.
Sıralanabilir liste için CollectionView
özel alt sınıfını kullanıyorum ve documents
öğesini ekledikten sonra öğeyi ekledikten sonra html5sortable jquery eklentisini arıyorum.
Satır içi düzenleme için, oluşturulmakta olan her document
için bir itemController
ayarlayın. DocumentController
'un içinde, belgeyi düzenleme işleminin durumunu sürdürdüm.
İki yaklaşımın nasıl birleştirileceği hakkında bilgi arıyorum. İhtiyacım olan şey, CollectionView
'daki her itemView
için bir itemController
kurmak için bir yoldur. İlgili kodu aşağıya koydum.
App.SortableView = Ember.CollectionView.extend({
tagName: 'ul',
itemViewClass: 'App.SortableItemView',
didInsertElement: function(){
var view = this;
Ember.run.next(function() {
$(view.get('element')).sortable();
});
}
});
App.SortableItemView = Ember.View.extend({
templateName: 'sortable-item',
doubleClick: function() {
//This should ideally send 'editDocument' to controller
}
});
App.DocumentController = Ember.ObjectController.extend({
isEditing:false,
editDocument: function() {
this.set('isEditing', true);
},
finishedEditing: function() {
var model = this.get('model');
model.get('store').commit();
this.set('isEditing', false);
}
});
<script type="text/x-handlebars" data-template-name="category">
<h1>{{ name }}</h1>
<h2>Documents</h2>
<!-- This makes a sortable list -->
{{view App.SortableView contentBinding="documents"}}
<!-- This makes an editable list -->
{{#each documents itemController="document"}}
<!-- change markup dependent on isEditing being true or false -->
{{/each}}
<!-- How do I combine the two -->
</script>
Yardımlarınız için teşekkür ederiz. Gerçekten takdir ediyorum.
Teşekkür Christoper. Tüm bunlar mantıklı ama benim için çalışıyor gibi görünmüyor. DocumentsController'ı söylediğin gibi uyguladım ama eğer 'controller '' sortable-item' şablonunda kayıt olsaydım, kontrolör hala 'category' kontrolörüdür. İşte CollectionView kullanma çağrısı: {{App.SortableView contentBinding = "controller.documents"}} Bir şeyi özlüyor muyum? – raytiley
, 'content' öğesine başvurmak istediğiniz bireysel görünümün içinde. Oluyor 'DocumentsController' şeffaf bir "DocumentController" her "belge" etrafında döndürülüyor. 'CollectionView', bunun gerçekleştiğini bilmiyor ya da umursamıyor: yine de' içeriğe 'geri döndüğü değeri ayarlıyor. İsterseniz, 'controller' öğesini itemView sınıfınızdaki' content' özelliğine bağlayabilirsiniz. –
Teşekkürler Christopher. Bariz bir şey eksik olmalıyım. Şablonumda/görünümümde, App.DocumentController uygulamasının bir örneğini App.Document örneğini devre dışı bırakırsam, bu nedenle Belge Denetçisi, denetleyici tarafından sarılmış belgeyi değil, yalnızca belgeyi veriyordur. Sahip olduğum kodun bir kısmını yapmaya çalışacağım. Zaman ayırdığın için teşekkürler. – raytiley