Backbone js view render click方法不调用[非常基础]
Backbone js view render click method not calling [Very Basic]
我是backbone js的蹒跚学步,实际上昨天出生..
学习本教程 - https://www.youtube.com/watch?v=_6pBvMK1Qgo
我正在尝试执行这个简单的视图代码,但是渲染方法没有被调用 -
<script type="text/javascript">
model = Backbone.Model.extend ({
data : [
{text : "Google", href : "www.google.com"},
{text : "Facebook", href : "www.facebook.com"}
]
});
var View = Backbone.View.extend({
initialize : function () {
console.log('Initializing...!!!');
this.template = $('#list-template').children();
},
el : '#container',
events : {
'click' : 'render'
},
render : function () {
console.log('button clicked');
var data = this.model.get('data');
for (i=0, j=data.length; i<j; i++) {
var li = this.template.clone().find('a').attr('href', data[i].href).text(data[i].text).end();
this.$el.find('ul').append(li);
}
}
});
var view = new View({model : model});
</script>
<div id="container">
<button>Load</button>
<ul id="list">
</ul>
</div>
<div id="list-template">
<li><a href=""></a></li>
</div>
请让我知道我做错了什么蠢事。
控制台日志给出 -
Initializing...!!!
首先,您应该以正确的方式描述您的模型 - 创建一个 class 然后创建此 class 的实例:
var Model = Backbone.Model.extend ({});
var model = new Model({
data : [
{text : "Google", href : "www.google.com"},
{text : "Facebook", href : "www.facebook.com"}
]
});
可以直接调用render()
:
var view = new View({model : model});
view.render();
但您的 click
活动也可以。
这是工作的 jsfiddle:http://jsfiddle.net/utm3w6nb/3/
我发现了问题。我的脚本在我的 DOM 之上,所以渲染在我的 DOM 可以初始化之前被调用。我在 ready 上添加了 jquery,它现在可以正常工作了。谢谢
我是backbone js的蹒跚学步,实际上昨天出生..
学习本教程 - https://www.youtube.com/watch?v=_6pBvMK1Qgo
我正在尝试执行这个简单的视图代码,但是渲染方法没有被调用 -
<script type="text/javascript">
model = Backbone.Model.extend ({
data : [
{text : "Google", href : "www.google.com"},
{text : "Facebook", href : "www.facebook.com"}
]
});
var View = Backbone.View.extend({
initialize : function () {
console.log('Initializing...!!!');
this.template = $('#list-template').children();
},
el : '#container',
events : {
'click' : 'render'
},
render : function () {
console.log('button clicked');
var data = this.model.get('data');
for (i=0, j=data.length; i<j; i++) {
var li = this.template.clone().find('a').attr('href', data[i].href).text(data[i].text).end();
this.$el.find('ul').append(li);
}
}
});
var view = new View({model : model});
</script>
<div id="container">
<button>Load</button>
<ul id="list">
</ul>
</div>
<div id="list-template">
<li><a href=""></a></li>
</div>
请让我知道我做错了什么蠢事。
控制台日志给出 -
Initializing...!!!
首先,您应该以正确的方式描述您的模型 - 创建一个 class 然后创建此 class 的实例:
var Model = Backbone.Model.extend ({});
var model = new Model({
data : [
{text : "Google", href : "www.google.com"},
{text : "Facebook", href : "www.facebook.com"}
]
});
可以直接调用render()
:
var view = new View({model : model});
view.render();
但您的 click
活动也可以。
这是工作的 jsfiddle:http://jsfiddle.net/utm3w6nb/3/
我发现了问题。我的脚本在我的 DOM 之上,所以渲染在我的 DOM 可以初始化之前被调用。我在 ready 上添加了 jquery,它现在可以正常工作了。谢谢