Javascript 主干视图实例未按预期工作
我想我遗漏了一些非常琐碎的东西。我创建了一个Javascript 主干视图实例未按预期工作,javascript,backbone.js,Javascript,Backbone.js,我想我遗漏了一些非常琐碎的东西。我创建了一个主干视图,如下所示(不扩展主干视图): 但当我运行这段代码时,它不会记录任何东西。当我显式执行时,它不起作用:PlayersView.render()也是 但以下代码是有效的: var PlayersView = Backbone.View.extend({ initialize: function() { this.render(); }, render: function() { consol
主干视图
,如下所示(不扩展主干视图
):
但当我运行这段代码时,它不会记录任何东西。当我显式执行时,它不起作用:PlayersView.render()代码>也是
但以下代码是有效的:
var PlayersView = Backbone.View.extend({
initialize: function() {
this.render();
},
render: function() {
console.log("hello World");
}
});
var playersview = new PlayersView();
要添加到构造对象的视图
构造函数。它接受一些特殊选项,如“模型”、“标记名”等。但是第一个代码片段中的initialize(…)
和render(…)
属性实际上被忽略了
提供initialize
,render
的正确方法是使用Backbone.View.extend({…})
From
扩展
Backbone.View.extend(properties,[classProperties])开始使用
通过创建自定义视图类创建视图。您将要覆盖
render函数,指定声明性事件,可能还有
视图根元素的标记名、类名或id
换句话说,第一个视图的渲染方法没有被自定义渲染/初始化函数覆盖。
当使用extend
时,您实际上让主干理解您希望使用自己的方法,而不是“默认”的方法。我在这里没有看到任何错误。。嘿,您的小提琴有我的第二段代码,它在我的代码中也起作用,问题在于第一段代码(我创建视图时没有扩展主干视图),谢谢。谢谢你的回答,我现在明白问题所在了。但是构造函数的文档说,如果视图定义了一个初始化函数,它将在视图第一次创建时被调用代码>所以在我创建视图时应该调用它,对吗?那里的文档有点不完整。如果Backbone.View的扩展定义了一个initialize函数,它可能会说,当视图第一次创建时,它会被调用。
它假设您要扩展基本视图
类,因为这是通过提供render()
方法使它做任何有趣的事情的正确方法。明白了,总之,我不能只创建一个主干视图并在屏幕上渲染它。我必须扩展主干.View,然后初始化/渲染它。那么,创建单个主干视图的用途在哪里呢?您可以创建视图的单个实例;请确保将自定义视图的概念与视图的实例分开。通过扩展Backbone.View
可以创建一个自定义类,然后可以实例化的单个实例。自定义类是通过扩展来描述的,比如var HelloWorldView=Backbone.View.extend({…})代码>。然后可以创建该自定义类的实例,如var helloView=new HelloWorldView()代码>实际对屏幕进行渲染的事情是每当调用helloView.render()
。是的,我知道扩展视图后可以创建视图的单个实例。我所说的单主干视图是这样的:var PlayersView=new Backbone.view()
,我可以在屏幕上呈现此视图吗?谢谢,那么创建视图的单个实例的最佳实践是什么,即不扩展主干。视图?按照您的方式,只创建一个没有任何自定义属性和方法的视图。在创建自己的自定义视图时,应该扩展主干.View
,然后可以创建任意数量的实例。
var PlayersView = Backbone.View.extend({
initialize: function() {
this.render();
},
render: function() {
console.log("hello World");
}
});
var playersview = new PlayersView();