2017-01-19 7 views
0

ある私はBackbone.Viewを拡張して、そのレンダリング関数を呼び出しますが、私が手にしています「キャッチされない例外TypeErrorを:view.renderは関数ではありません」(文書onloadイベントで実行されている)私Backbone.View機能が未定義

コード:コンソールで

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

あなたは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; 
+0

ありがとうございますが、私はbackbone.jsの内部でエラーが発生します。Uncaught TypeError: 'instanceof'の右側がオブジェクトではありません。 [fiddle](https://jsfiddle.net/s9Lhq82a/1/) – alr3000

+0

しかし、それはフィドルでは機能しませんが、変更は私の実際のコードで動作しますので、よろしく! – alr3000

関連する問題