新來的Backbone,我試圖讓一個簡單的應用程序啓動並運行。我正在Grunt.js與醜化到Concat的我的所有文件按以下順序:困惑於Backbone.js結構 - 試圖引導一個簡單的應用程序
'assets/js/main.min.js': [
'collections/**/*.js',
'models/**/*.js',
'routers/**/*.js',
'views/**/*.js',
'app.js',],
我從字面上試圖只是呈現一個模板到<div>
對於初學者。我從Backbone.js的應用程序中複製了很多。
我非常簡單的應用程序文件如下。
的意見/ 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();
我對文字的牆道歉,我只是很新。在我繼續之前,試圖圍繞這個簡單的解決方案來解決問題!
謝謝!
我看到現在,謝謝。所以你可以通過一個**集合**以查看以及?我試着用'new PH.OffersList({model:PH.Offer})傳遞模型;'我得到一個新的錯誤: 'Uncaught TypeError:Object function(){ return r.apply(this,參數); }沒有方法'toJSON' – dmackerman
檢查編輯的代碼...同樣你也可以傳入一個集合 –
非常棒。謝謝! – dmackerman