Bir çeşit özyineleme (tipik klasör/dosya iç içe liste) içeren işlemek için oldukça karmaşık bir görünümüm var. Heterojen nesneler (klasör ve dosyalar) içermesi, Handlebars şablonlarını yazmayı daha da zorlaştırır.Bağlantıları programsal olarak bir EmberJS görünümünde oluşturun
Bu nedenle, bulduğum tek çözüm bir görünüm oluşturmak ve oluşturma arabelleğini el ile doldurmaktır. Ben şu çözüm ile geldi:
ŞimdiApp.LibraryContentList = Ember.View.extend({
tagName: 'ol',
classNames: ['project-list', 'dd-list'],
nameChanged: function() {
this.rerender();
}.observes('[email protected]'),
render: function(buffer) {
// We only start with depth of zero
var content = this.get('content').filterProperty('depth', 0);
content.forEach(function(item) {
this.renderItem(buffer, item);
}, this);
},
renderItem: function(buffer, item) {
switch (item.constructor.toString()) {
case 'App.Folder':
this.renderFolder(buffer, item);
break;
case 'App.File':
this.renderFile(buffer, item);
break;
}
},
renderFolder: function(buffer, folder) {
buffer.push('<li class="folder dd-item">');
buffer.push('<span class="dd-handle">' + folder.get('name') + '</span>');
// Merge sub folders and files, and sort them by sort order
var content = this.mergeAndSort();
if (content.get('length') > 0) {
buffer.push('<ol>');
content.forEach(function(item) {
this.renderItem(buffer, item);
}, this);
buffer.push('</ol>');
}
buffer.push('</li>');
},
renderFile: function(buffer, album) {
buffer.push('<li class="album dd-item">');
buffer.push('<span class="dd-handle">' + file.get('name') + '</span>');
buffer.push('</li>');
}
});
, ne istediğim başka rotaya her klasör ve her dosya tıklanabilir olacak şekilde bağlantı eklemek ve yönlendirmek için muktedir olduğunu. Ama nasıl yapmalıyım, linkTo yardımcısına erişimim yok mu? LinkView görünümü ile oynamayı denedim, ancak hiç bir başarıya ulaşamadım. Her bir öğe için işleyicileri manuel olarak kaydettirmeli miyim?
Bunun yerine, bunu bir CollectionView ile ayırmayı ve içeriği derinliklerine bölmeyi, böylece şablonları kullanarak oluşturabilmeyi düşündüm, ancak daha karmaşık görünüyor.
Herhangi bir düşünce?
Sadece bir fikir (' {{{link hikaye}}}')' – Hawili
Bu konuda düşündüm ama sadece ben Gidonlar çalışma zamanını kullanarak (şablonlarımı derlediğimden), bu yüzden tüm Gidonlara bağımlılığı ortaya koymaktan kaçınmak istiyorum. –