我正在努力学习脊椎,但我有一个问题,如何把手。
我想建立一个模块化的应用程序,其中有单独的文件视图和模板。
这是我的app.js:
define([
// Application.
"app",
"views/home",
],
function(app, homeView){
var Router = Backbone.Router.extend({
routes: {
"": "index",
"home": "home"
},
index: function() {
console.log('hello');
},
home: function() {
console.log('home');
homeView.render();
}
});
return Router;
});在这一点上,我在控制台上获得了“home”。
这里是views/home.js
define([
'app',
'text!templates/home.html'
], function(app, homeTxt) {
var homeView = Backbone.View.extend({
el: $('#main'),
render: function(){
console.log('render');
var data = { property : "1" };
this.template = Handlebars.compile(homeTxt);
this.el.append( this.template() );
}
});
return new homeView;
});现在我应该在控制台上得到'render‘,但是我没有得到它,’template /home.html‘上的模板也没有被渲染。
我在控制台或DOM上也没有得到任何错误。
发布于 2012-10-13 21:23:50
我认为你需要在调用render之前实例化视图-
home: function() {
var viewInstance = new homeView();
console.log('home');
viewInstance.render();
}许多主干代码样本没有使用大写字母来表示应该实例化的内容(即用‘new’调用),反之亦然。
https://stackoverflow.com/questions/12629620
复制相似问题