2013-10-17 19 views
0

我在學習backbone.js。我從backbone.js文檔中找到了以下代碼。如何理解骨幹語法

//cretaing class name as Sidebar with extends Backbone.Model class 
var Sidebar = Backbone.Model.extend({ 
       promptColor:function() { 
        var cssColor = prompt("Please enter a CSS color:"); 
        this.set({color1: cssColor}); 
       } 
     }); 
    //cretaing object for Sidebar class 
     var sidebarObject = new Sidebar(); 
    //following statement not understand 
     sidebarObject.on("change:color1", function(model, color23) { 
      $('#body1').css({background: color23}) 
     }); 

我明白了什麼:

每當屬性color1會自動改變模式( '滑桿')觸發sidebarObject.on()

我不解地問:

  1. 我們傳遞2個參數的名稱是model,color23sidebarObject.on()的第二個參數。我對這個論點一無所知。

2.按照我的理解模型Sidebar在我的例子中。是的。

任何人都可以幫助我。

謝謝。

回答

2

是的,您的第二個假設是正確的,在上面的示例中,側欄是模型。

有被傳遞給回調函數的2個參數:

  1. 在該事件最初發生
  2. 值傳遞沿着與事件

注意模型的sidebarObject只聽「顏色」變化事件。當您更改模型的特定屬性產生這種情況:

this.set({color1: cssColor}); 

現在,如果你改變聽者:

sidebarObject.on("change:taste", function(model, color23) { 
    $('#body1').css({background: color23}) 
}); 

它不會是火了,當this.set({color: cssColor});被調用,因爲它監聽「口味」變化:

this.set({taste: 'good'}); 

我分開上面的例子中爲小提琴,所以你可以用它玩:http://jsfiddle.net/CtzsR/1/

如果你是新來的整個事情http://backbonetutorials.com/what-is-a-model/是一個值得一看的網站。

我希望現在它更清晰。

+0

根據你的觀點'1.事件最初發生的模型',我可以通過'Sidebar'作爲參數而不是'model'.Also解釋我的簡單例子,如果它聽到更多的屬性,如' sidebarObject.on(「change:taste change:color1」,function(model,color23,color24){$('#body1')。css({background:color23}); alert(「color24」); } );' – user2873816

+0

你在回調函數中看到的參數是由Backbone傳遞的,你可以重命名它們,但Backbone仍然會在第一個地方傳遞模型,第二個地方的事件屬性。是的,Backbone可以監聽多個屬性更改事件。我建議你在那個小提琴上玩耍。我也修改它代表傾聽多個屬性:http://jsfiddle.net/CtzsR/2/ –

+0

如果您發現此答案幫助您考慮將其標記爲已接受。 –