【发布时间】:2013-08-10 17:11:02
【问题描述】:
我正在尝试制作一个简单的 Backbone 网络应用程序。我正在使用 require 来管理我的所有依赖项。我的html很简单:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="./css/todos.css">
<title>Clinical Auth</title>
<script type="text/javascript" src="js/lib/require-2.1.1.js" data-main="js/app"></script>
</head>
<body>
<div id="container"></div>
</body>
</html>
我的 app.js 只是一个调用我的 application.view.js 的路由器:
require([
'backbone',
'views/application.view'
], function(Backbone, app) {
var Router = Backbone.Router.extend({
routes: {
"": "main"
},
main: function(){
var appView = new app();
appView.render();
}
});
var router = new Router();
Backbone.history.start();
});
如您所见,我在路线标题main 中启动我的应用程序。我的 application.view.js 也很简单。
define(function(require) {
"use strict";
var Backbone = require('backbone');
var $ = require('jquery');
var AppView = Backbone.View.extend({
el: $('#container'),
render: function() {
$(this.el).append("<div>hello world</div>");
return this;
}
});
return AppView;
});
另外,这是我的 require.config 文件:
require.config({
baseUrl: "./js/",
paths: {
jquery: 'lib/jquery-1.8.2',
underscore: 'lib/underscore-1.4.2',
backbone: 'lib/backbone-0.9.2',
'backbone.localStorage': 'lib/backbone.localStorage'
},
shim: {
underscore: {
exports: "_"
},
backbone: {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
'backbone.localStorage': {
deps: ['backbone'],
exports: 'Backbone'
}
}
});
当我在主路由中设置断点时,我可以看到 container 正在被操纵,但它从未出现在我的屏幕上。我究竟做错了什么?我知道这会很简单,但我正在拔头发。
【问题讨论】:
-
将
el传递给您的AppView 怎么样,例如var app = new app({el: $('#container')})。 -
可能是时间问题,为什么不改用
el: '#container'? -
与
require剥离 jsfiddle.net/sushanth009/VLf65 工作正常 -
就像
mu说我将其更改为el: '#container',因为这是正确的做法。我也尝试了Jack的想法,但我仍然得到相同的结果。 -
在您编写的代码中没有什么复杂的东西会阻止视图呈现。您是否在控制台中看到任何错误。如果可能,也发布
require.config文件
标签: javascript backbone.js require