我正在尝试使用require.js、AMD 和handlebars 为模板构建一个Backbone 应用程序。这是我的索引视图的代码。
define([
'jquery',
'underscore',
'backbone',
'handlebars',
'collection/questions',
'helpers'
], function($, _, Backbone, Handlebars, QuestionsCollection, Helpers){
// Main Index View
var IndexView = Backbone.View.extend({
el: "#content",
template: Helpers.template('index'),
initialize: function(){
this.questions = new QuestionsCollection();
this.questions.on('sync', this.render, this);
this.questions.fetch();
},
render: function(){
this.$el.html(this.template(this));
this.questions.each(this.addQuestion, this);
return this;
},
addQuestion: function(question){
var view = new IndexView.Question({ model: question });
view.render();
},
count: function(){
console.log(this);
return this.questions.length;
}
});
// Individual Question View
IndexView.Question = Backbone.View.extend({
render: function(){
// console.log(this.model);
}
});
return IndexView;
});
在这里,一切都按预期工作。但现在我想要一个辅助函数 count 来返回集合中模型的数量。这样我就可以用{{count}}
我handle bar template
的来打印类似的东西。'There are 8 questions'
. 但我的范围有问题。
内部count
函数 this 指的是window
而不是指collection
. 我将如何count
在question collection
. 我计划在我的应用程序中使用许多这些辅助功能。所以需要一些可靠的方法来做到这一点。
谢谢。