[英]Multi file backbone.js application doesn't seem to work
我在.js文件中有一个视图,除了'index.html'文件,它看起来像这样:
window.App = Backbone.View.extend({
el: $('#article'),
initialize: function() {
_.bindAll(this, 'render');
console.log('binding');
console.log($('#article'));
this.render();
},
render: function() {
console.log('rendering');
this.$el.html("rendered");
return this;
}
});
我使用JQuery的ready函数在'index.html'中分配这个视图:
<div id="article">
</div>
<script type="text/javascript">
$(function(){
console.log($('#article'));
new window.App();
});
</script>
正如您可能猜到的那样,“呈现”不会出现在DOM上。 问题是,当我将所有东西打包在一起时(标签中的视图和分配),它可以工作。
有任何想法吗 ?
我认为你的问题是:
window.App = Backbone.View.extend({
el: $('#article'),
在此HTML之前发生:
<div id="article">
</div>
是浏览器看到的。 那会让$('#article')
空,你的render
方法将无法访问DOM中的任何内容。 打开你的控制台并运行这个演示,你会看到你所看到的: http : //jsfiddle.net/ambiguous/7sGcZ/
最简单的解决方案是使用选择器作为el
:
window.App = Backbone.View.extend({
el: '#article',
然后让Backbone将其转换为DOM元素。 这样,当Backbone需要创建视图的$el
时, $('#article')
会找到一些东西。
演示(有效): http : //jsfiddle.net/ambiguous/Vd6jP/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.