我的Backbone.View函数未定义

时间:2017-01-19 06:12:32

标签: javascript backbone.js

我正在扩展Backbone.View然后调用它的渲染函数,但我得到一个“未捕获的TypeError:view.render不是函数”

代码(在文档onload中运行):

var view = Backbone.View.extend({
 id: "my-view",
 render: function() {
   console.log("in render, this =", this);
   this.el.innerHTML = "Hello";
   return this;
 }
});
console.log("outside view, view =", view);
document.body.appendChild(view.render().el);

导致控制台:

outside view, view = function (){return r.apply(this,arguments)}
VM639:58 Uncaught TypeError: view.render is not a function

它看起来像是一个构造函数,但我尝试创建一个新的视图()然后调用它的函数并得到一个不同的错误:

Uncaught TypeError: this._ensureElement is not a function
at e.View (backbone-min.js:1)   

我在其他地方找到了答案(Backbone View: function is undefinedRender a View of Backbone Model returns undefined),但样本很复杂,我不知道如何将答案应用到我的代码中。我做了一个非常简单的例子,希望即使我的错误非常基本,也会鼓励你回答它。

这是一个jsfiddle:https://jsfiddle.net/s9Lhq82a/

1 个答案:

答案 0 :(得分:1)

您定义了一个从Backbone.View扩展的视图类。要创建该类的实例,您必须使用new

var View = Backbone.View.extend({
    // this is your View Class
});

var myView = new View(); // this is an instance of View, it has a render function
myView.render().el;