Javascript 主体视图未渲染

Javascript 主体视图未渲染,javascript,backbone.js,Javascript,Backbone.js,我在某个地方犯了一个愚蠢的错误,我无法对基本主干视图进行渲染。有人能告诉我这个代码出了什么问题吗 var view = new Backbone.View({ el: 'body', template: '<p>this is my new template</p>', render: function() { console.log('rendering myself'); this.$el.html(this.t

我在某个地方犯了一个愚蠢的错误,我无法对基本主干视图进行渲染。有人能告诉我这个代码出了什么问题吗

var view = new Backbone.View({
    el: 'body',
    template: '<p>this is my new template</p>',
    render: function() {
        console.log('rendering myself');
        this.$el.html(this.template);
        return this;
    }
});

view.render();
var视图=新主干。视图({
el:‘身体’,
模板:“这是我的新模板”,
render:function(){
console.log(“呈现我自己”);
this.$el.html(this.template);
归还这个;
}
});
view.render();

PS console.log为空。

您必须实际创建该视图

呈现前:函数(){}

当您想加载页面/视图时,请使用

$(document).ready( function(){
     new view({"el:body});
});
虽然通常视图变量应该从主干视图扩展

因此,与其说是“var视图”。。。应该是这样的 window.myView=Backbone.View.extend({})


当视图表示对象时,更易于管理。

您必须实际创建该视图

呈现前:函数(){}

当您想加载页面/视图时,请使用

$(document).ready( function(){
     new view({"el:body});
});
虽然通常视图变量应该从主干视图扩展

因此,与其说是“var视图”。。。应该是这样的 window.myView=Backbone.View.extend({})


当视图表示对象时,更容易管理。

您的语法有点不正确,应该首先定义视图,然后实例化它

//define view 
var MyView = Backbone.View.extend({
    el: 'body',
    template: '<p>this is my new template</p>',
    render: function() {
        console.log('rendering myself');
        this.$el.html(this.template);
        return this;
    }
});

//create view instance
var view = new MyView();
view.render();
//定义视图
var MyView=Backbone.View.extend({
el:‘身体’,
模板:“这是我的新模板”,
render:function(){
console.log(“呈现我自己”);
this.$el.html(this.template);
归还这个;
}
});
//创建视图实例
var view=newmyview();
view.render();

您的语法有点不正确,应该首先定义视图,然后实例化它

//define view 
var MyView = Backbone.View.extend({
    el: 'body',
    template: '<p>this is my new template</p>',
    render: function() {
        console.log('rendering myself');
        this.$el.html(this.template);
        return this;
    }
});

//create view instance
var view = new MyView();
view.render();
//定义视图
var MyView=Backbone.View.extend({
el:‘身体’,
模板:“这是我的新模板”,
render:function(){
console.log(“呈现我自己”);
this.$el.html(this.template);
归还这个;
}
});
//创建视图实例
var view=newmyview();
view.render();

传统的方法是扩展Backbone.view,并实例化视图的新实例(根据Jack的回答),但您可以通过将Backbone.view.extend包装在parens中获得所需的内容(实例化简单视图):

var view = new (Backbone.View.extend({
    el: 'body',
    template: '<p>this is my new template</p>',
    render: function() {
        console.log('rendering myself');
        this.$el.html(this.template);
        return this;
    }
}));

view.render();
var view=new(Backbone.view.extend({
el:‘身体’,
模板:“这是我的新模板”,
render:function(){
console.log(“呈现我自己”);
this.$el.html(this.template);
归还这个;
}
}));
view.render();


这对于“一次性”视图/路由器等很有帮助,因为您不打算多次重新实例化。Jack答案中的方法在大多数情况下更具可读性(也更有用)。

传统的方法是扩展Backbone.view,并实例化视图的新实例(根据Jack的答案),通过将Backbone.view.extend包装在parens中,您可以得到您想要的(实例化简单视图):

var view = new (Backbone.View.extend({
    el: 'body',
    template: '<p>this is my new template</p>',
    render: function() {
        console.log('rendering myself');
        this.$el.html(this.template);
        return this;
    }
}));

view.render();
var view=new(Backbone.view.extend({
el:‘身体’,
模板:“这是我的新模板”,
render:function(){
console.log(“呈现我自己”);
this.$el.html(this.template);
归还这个;
}
}));
view.render();


这对于“一次性”视图/路由器等很有帮助,因为您不打算多次重新实例化。杰克答案中的方法在大多数情况下更具可读性(也更有用)。

首先,应该有
view.render()而不是
myView.render()-但这是个小问题。一个更大的问题是视图没有呈现(这是我的新模板

没有附加到DOM),很抱歉这是一个输入错误。现在检查它是否应该呈现,我还添加了一个jsbin。谢谢。但我仍然无法在浏览器中渲染它。我可以看出view.el是未定义的,不知道为什么。在JsBin中,一切都很好。如果不是由您进行渲染,那么请确保在加载
DOM
后实例化并渲染视图,我认为在JsBin(和JSFIDLE)中,默认情况下,它会在
ready
事件中加载JavaScript。该死的,伙计,你很好:)谢谢。事实上,我的视图是在页面渲染完成之前创建的。我创建的视图没有指向任何现有的DOM节点而不是
myView.render()-但这是个小问题。一个更大的问题是视图没有呈现(这是我的新模板

没有附加到DOM),很抱歉这是一个输入错误。现在检查它是否应该呈现,我还添加了一个jsbin。谢谢。但我仍然无法在浏览器中渲染它。我可以看出view.el是未定义的,不知道为什么。在JsBin中,一切都很好。如果不是由您进行渲染,那么请确保在加载
DOM
后实例化并渲染视图,我认为在JsBin(和JSFIDLE)中,默认情况下,它会在
ready
事件中加载JavaScript。该死的,伙计,你很好:)谢谢。事实上,我的视图是在页面渲染完成之前创建的。我创建的视图没有指向任何现有的DOM节点。