我正在为我目前正在构建的 Web 应用程序构建文件库视图,该应用程序背后的基础是,
- 有一个项目。
- 每个项目可以拆分为多个项目
- 用户可以将文件上传到项目或项目
- 如果文件被上传,它会同时显示在项目库和项目库中
我目前遇到的问题是我可以很好地查看项目文件库。没有问题,这是我正在使用的代码,
加载文件视图
loadFileView: function() {
var fileView = new app.ProjectFilesView({
collection:app.FileList
});
this.$el.find('#files').html(fileView.render().el);
fileView.addRepo();
},
项目文件视图
render: function() {
this.$el.html(this.template({
fileDetails: this.collection,
p: app.project.toJSON()
}));
console.log(this.collection)
return this;
},
addRepo: function(filter) {
var repoView = new app.ProjectFilesRepoView;
this.$el.parents("#files").find('.file_content:first').append(repoView.render().el);
},
创建 FilePanelWrapperView
new app.FilePanelWrapperView({
collection : app.FileList
});
这部分代码是实际构建库的部分(以网格格式显示)。
initialize: function() {
//this.model.on('change', this.updateVisibility, this);
this.addFiles();
this.listenTo(this.collection, 'remove', this.updateCounter);
this.listenTo(this.collection, 'add', this.addNewOne);
},
addFiles: function() {
//this.$('ul.share').html('');
this.collection.each(this.addOne, this);
},
addOne: function( file ) {
var view = new app.FilePanelView({
model: file
});
view.render().el;
var expander = $('article.project_files').find('span.expander').length;
if (expander == 0) {
$('article.project_files header h1').prepend('<span class="expander"></span>');
//bind the expander
$('.expander').unbind('click').click($.initExpanders.expander);
//$('.file_content').show();
}
},
渲染项目
renderItem: function() {
//console.log(this.template(this.model.toJSON()));
$("body .tab-content.files ul.image-grid").prepend(this.template(this.model.toJSON()));
this.$el.find(".thumb-panel-container").tipTip({
delay: 0,
defaultPosition: "top"
}).hover(function() {
$(this).children(".thumb-panel-menu").fadeIn(100);
;
},function () {
$(this).children(".thumb-panel-menu").fadeOut(100)
;
});
$("time").timeago();
return this;
}
现在对于项目库,我几乎在执行相同的代码,但希望将其应用于.tab-content.files .image-grid
页面加载时存在的不同元素,但骨干似乎无法找到它,为什么会这样?难道我做错了什么?