对于一个可能非常简单的错误,我深表歉意,但我的主干 View 未加载。该代码在这个 fiddle 中运行良好:http://jsfiddle.net/v9suvj3m/1/但是在我的代码中它不起作用。我认为我犯了一个错误,要么是我将脚本包含在 jade 文件中,要么是没有等待 js 中加载某些内容?如果我插入警报,则在定义 myview 之前会触发警报,但之后不会触发任何警报。
进行编辑以考虑评论。主要问题仍未解决。
index.jade
doctype html
html(lang='en')
head
link(rel="stylesheet" type="text/css" href="styles/main.css")
title Homepage
body
#body-js
script(src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js")
script(src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.6/underscore-min.js")
script(src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min.js")
script(type='text/javascript' src='scripts/main.js')
脚本/main.js
var myview, view;
myview = Backbone.View.extend({
initialize: function() {
return $("#body-js").html("hello");
}
});
view = new myview({
el: '#body-js'
});
编辑:使用主干的非缩小版本,我发现错误位于 if (protoProps && _.has(protoProps, 'constructor')) {
- 第 1538 行。我认为这意味着_
的定义不足。这是一个正确的假设吗?我该如何解决它?
最佳答案
将脚本放在 #body-js
之后。
Backbone 找不到 dom 元素来生成其 View 。
因为你的代码是在 dom 准备好之前执行的。
jsFiddle 上的情况并非如此。它在 onDomready
执行。
您还需要在 html(lang='en')
行之后再制表一个级别。
我终于找到了你的问题...你的下划线太旧了(1.1.6)。
使用最新版本(1.7.0)。
关于javascript - 主干 View 未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26289600/