【发布时间】:2014-06-05 11:48:01
【问题描述】:
我不确定为什么我的 Backbone.View 中的 el 未定义。
这是我当前代码的一个小提琴:http://jsfiddle.net/NC47C/
这里是 JavaScript:
var TheModel = Backbone.Model.extend({
defaults: {
color: 'Red',
message: null,
endOfLine: null
}
});
var TheCollection = Backbone.Model.extend({
model: TheModel,
url: 'http://jsonstub.com/test/1'
});
var ParentView = Backbone.Model.extend({
el: '.js-parent',
initialize: function () {
this.collection = new TheCollection();
console.log(this.$el);
return this;
},
myTemplate: function (scriptID, data) {
var temp = _.template( $(scriptID).html(), {model: data} );
this.$el.html(temp);
return this;
},
render: function () {
var self = this;
this.collection.fetch({
type: 'GET',
beforeSend: function (request) {
request.setRequestHeader('JsonStub-User-Key', 'xxxxxxxxxxxxx');
request.setRequestHeader('JsonStub-Project-Key', 'xxxxxxxxxxxx');
},
success: function (data) {
console.log( 'data =',data.toJSON() );
self.myTemplate('#parentTemplate', self.collection);
},
error: function () {
console.log('ERROR!!!');
}
});
return this;
}
});
var parent = new ParentView();
parent.render();
这是我的 HTML:
<script type="text/template" id="parentTemplate">
<h1>hi</h1>
</script>
<div class="js-parent">
</div>
【问题讨论】:
-
当您尝试构建 view 时,为什么要扩展
Backbone.Model?你不是说var ParentView = Backbone.View.extend({ ... })吗?如果你扩展正确的东西,似乎工作正常:jsfiddle.net/ambiguous/x87Yn 你也应该做var TheCollection = Backbone.Collection.extend来建立一个集合...... -
除了对答案中 el 对象的长时间讨论之外, mu 太短是正确的。你在扩展错误的东西。如果您扩展视图而不是模型,则可以正常工作。
-
哇,我瞎了!非常感谢您的帮助!我不敢相信当我指的是 Backbone.View.extend 时我输入了 Backbone.Model.extend。谢谢!
标签: javascript jquery backbone.js