2013-05-10 67 views
1

我目前正在構建一個大骨幹應用程序,這裏是我的問題。如何應對DOM元素引用最佳方式?現在,我只需查找將在未來訪問的所有元素(表單和類似事件),並將它們綁定到視圖本身。這樣我就不必每次都需要與它們進行交互時搜索這些元素。但實際上這些參考文獻的數量正在迅速增長。這是好方法還是我可以做得更好?感謝提前:)Backbone.js DOM元素引用方法

代碼示例:

initialize: function() { 
    this.form1 = this.$el.find('.whatever'); 
    ... 
    ... 
} 
+1

是啊,我做同樣的事情......你應該簡化你的觀點,如果你有太多的DOM元素每個視圖的引用 – imrane 2013-05-10 15:32:34

回答

1

應用$use方法後.selector將被緩存。

HTML:

<div data-container> 
    <div data-something>smthng</div> 
</div> 

JS:

var View = Backbone.View.extend({ 
    el : '[data-container]', 
    ui : { 
     something : '[data-something]' 
    }, 
    someFn : function() { 
     this.$use(this.ui.something).css('background', '#999'); 
     return this; 
    }, 
    $use : function (selector) { 
     console.log(typeof this.ui[selector] === 'undefined' ? 'dom query' : 'already cached'); 
     var $selector = this.ui[selector] === selector ? 
      this.ui[selector] : 
      this.$(selector); 

     return this.ui[selector] = $selector; 
    } 
}); 

new View().someFn().someFn().someFn(); 

演示:http://jsfiddle.net/vpetrychuk/K7nmr/