2011-09-15 22 views
16

私はこのコンセプトを頭に入れようとしています。BackboneJs:elとtagNameの違いはどういう意味ですか?

あなたはこれを私に教えてもらえませんか、el:属性とtagName:属性の違いの簡単な例を提供できますか?いくつかの例において

、異なるビューは時々el:を使用し、その他はtagName:を使用します。私は特にこのexample

+1

elはDOMの既存の要素を参照し、tagNameは指定された場合はclassNameを持つtagNameで新しいdom要素を作成します。 – STEEL

答えて

17

差の私の独自の実装をいじりだ

はこれです:

エルは、全体としてビューを表す実際のDOMノードへの参照を保持するために使用されるべきです。

これは、jQueryまたはw/eを使用して簡単にアクションを実行できることを意味します。 $(this.el).hide()または$(this.el).html( '私は今Jqueryオブジェクトです');

TagNameには、ELがされるDOMノードのタイプを決定するために使用される唯一の文字列です。デフォルトはdivですが、必要に応じて、あなたが好きなHTML要素にすることができます。

は考えてみましょう:

var view = Backbone.View.extend({ 
    tagName: 'p', 
    initialize: function() { 
     _.bindAll(this, 'render'); 
    }, 
    render: function() { 
     $(this.el).html('I am a jQuery-ized paragraph'); 
     return this; 
    } 
}); 


$(document.body).append(new view().render().el); 

あなたに実行しているかもしれない問題は、時にはあなたはtagNameをが無関係である場合には、ビューのインスタンス化にエルを設定することです:

var myView = new view({ el: $("someExistingEl") }); 
+0

だから一緒に使われることはありませんか? –

+2

これらを一緒に使用することはできません。 'el'を直接指定すると、' tagName'は無視されます。 –

+0

これらは一緒に使うことができますが、this.el = $(somethingelse)を明示的に設定することはできず、this.tagNameを尊重することを期待しています。 $(this.el).html( 'some stuff')を使用すると、this.tagNameが何であれ内部になります。 –

-3
var View = Backbone.View.extend({ 
    tagName: 'span', 
    id: 'identity', 
    class: 'classy', 
    el: $(this.tagName), // or 
    el: $('<' + this.tagName + ' />', { 
    id: this.id,  // identity 
    'class': this.class // classy 
    }) // this is jQuery shorthand for building an element fyi 
}); 

var view = new View(); 

私はそれがうまくいくはずだと思います。

+0

'el:$(this.tagName)'の 'this'はあなたの考えではありません。 –

関連する問題