Backbone 新手,我正在尝试启动并运行一个简单的应用程序。我正在使用 Uglify 运行 Grunt.js,以按以下顺序连接我的所有文件:
'assets/js/main.min.js': [
'collections/**/*.js',
'models/**/*.js',
'routers/**/*.js',
'views/**/*.js',
'app.js',],
我实际上只是在尝试将模板渲染<div>
为初学者。我从 Backbone.js todo 应用程序中复制了很多内容。
我非常简单的应用程序文件如下。
视图/offersList.js
var PH = PH || {};
(function ($) {
'use strict';
PH.OffersList = Backbone.View.extend({
el: $('.offers'),
template: _.template($('#offers-list-template').html()),
initialize: function () {
this.model.bind('change', this.render, this);
this.render();
},
render: function () {
this.$el.html(this.template(this.model.toJSON()));
return this;
},
});
})(jQuery);
模型/offer.js
var PH = PH || {};
(function () {
'use strict';
PH.Offer = Backbone.Model.extend({
defaults: {
name: "My Offer"
}
});
})();
集合/offers.js
var PH = PH || {};
(function () {
'use strict';
var Offers = Backbone.Collection.extend({
model: PH.Offer
});
PH.OffersCollection = new Offers();
})();
和我的app.js
var PH = PH || {};
$(function () {
'use strict';
// kick things off by creating the `PH`
new PH.OffersList();
});
我的.html
文件中有一个模板,在我的.offers
div 里面(我什至没有尝试渲染数据,只是此时的模板:
<ul class="offers">
<script id="offers-list-template" type="text/x-mustache-template">
<h1>Offers List</h1>
<p>Offers would go here</p>
</script>
</ul>
似乎模型尚未绑定或未实例化。我得到一个
Uncaught TypeError: Cannot call method 'bind' of undefined
就行了this.model.bind("change", this.render, this), this.render();
我为文字墙道歉,我对此很陌生。在我继续之前,试图围绕这个简单的解决方案进行思考!
谢谢!