Marionette CollectionView가 빈 컬렉션에서 작동하지 않는 이유는 무엇입니까?CollectionView가 빈 컬렉션으로 렌더링하지 못합니다.
CompositeView 내에서 CollectionView를 렌더링하려고합니다. 프로젝트 목록의 각 항목에있는 작업 목록입니다. CollectionView에 빈 콜렉션을 전달하기 전까지는 모든 것이 잘 작동합니다. 컬렉션 은입니다. 프로젝트에 쉽게 할당 된 작업이 없을 수 있습니다.
크롬에 의해 표시되는 오류가 전달 프로젝트의 컬렉션 TasksCollection
의 필터 메소드에 의해 반환 된 작업 목록이 있습니다로는, 어떤 이유를 내가 할 수있는 Backbone.Collection
이다 유효한
Uncaught TypeError: Object [object Object] has no method 'on'
을입니다 위의 오류가 표시된 이유를 찾지 못했습니다.
Marionette의 CollectionView는 빈 컬렉션 (emptyView
속성을 가짐)을 받아 들일 수 있습니다. 따라서 전달되는 경우 오류가 발생하는 이유는 무엇입니까? 나는 "그냥 작동해야"하는 컬렉션에 이벤트를 묶으려고한다고 가정합니다 - 그것은 결석 한 모델 일뿐입니다.
내 작업 모음은 다음과 같습니다
var TasksCollection = Backbone.Collection.extend({
model: TaskModel,
byProject: function(projectId) {
var matches = this.filter(function(task) {
return task.get('projectId') == projectId;
}, this);
return new TasksCollection (matches);
},
complete: function(state) {
return new TasksCollection (this.where({ complete: state }));
}
});
내보기
는 다음과 같이 :// Single task item
var TasksListView = Marionette.CollectionView.extend({
tagName: 'ul',
className: 'tasks nav nav-stacked nav-pills',
itemView: Minuteboy.views.TaskItem,
emptyView: Templates['partials/tasks-empty']
});
// Project item (should probably be a Layout or CompositeView)
var DashboardProject = Marionette.ItemView.extend({
tagName: 'article',
template: Templates['partials/dashboard-project'],
initialize: function() {
this.on('render', function() {
var tasks = AllProjectTasks.byProject(this.model.get('id')).complete(false);
this.$el.find('.tasks-wrapper').html(new TasksListView({
collection: tasks
}).render().el);
});
}
});
// Containing view with page title and container for projects list
var DashboardPage = Marionette.CompositeView.extend({
template: Templates['pages/dashboard'],
itemView: DashboardProject,
itemViewContainer: '#content'
});
마지막으로, 나는이 같은 페이지보기를 인스턴스화 :이
var page = new DashboardPage({
collection: // A valid Backbone.Collection
});