2013-02-20 76 views
2

如何將更改事件綁定到視圖模型以更改名稱並在視圖塊中顯示更改的名稱。 Backbone.js事件觸發器

Student = Backbone.Model.extend({ 
    initialize: function(){ 
     this.on("change:name", function(model){ 
      var name = model.get("name"); 
      alert("Changed my name to " + name); 
     }); 
    } 
}); 

var pe = new Student({ name: "sinduja", age: 20}); 
pe.set({name: 'shalini'}); 

回答

0

我以前寫我自己的自定義工具和反應雙向模型/視圖的變化,這是一個有點痛維護。然後我找到了插件Backbone.ModelBinder

它使你想要達到愚蠢的容易。在github自述頁面上有一些很好的例子,我將它與你聯繫起來,所以我沒有給予任何意見!如果起初看起來有點混亂,我會說盡力讓它工作,因爲從長遠來看,這個插件將爲您節省無數個小時,就像它對我來說一樣。

1

不支持在model.set上自動觸發更改事件嗎?

您只需將您的視圖註冊到更改事件。

Student = Backbone.Model.extend({ 
    initialize: function(){ 
     //initialize variables 
    } 
}); 

StudentView = Backbone.View.extend({ 
    initialize: function(model) { 
     _.bindAll(this); 
     model.on("change:name",this.nameChanged) 
    }, 
    nameChanged: function(evt) { 
     console.log("name changed", evt) 
    } 

}) 

用法:

var pe = new Student({ name: "sinduja", age: 20}); 
var sv = new StudentView(pe); 
pe.set({name: 'shalini'}); 
+0

謝謝...但我只得到名稱變更爲我的輸出,而不是改變name..wat SHD我做的就是更改後的名字嗎? – user2082957 2013-02-21 04:30:29

+0

非常感謝...我現在做出的改變能夠得到改變的名字。 – user2082957 2013-02-21 04:45:42

+0

我有一個疑問,但笏你在nameChanged()是你的印刷絕對行「名稱改變」,還有一件事是像wat變量我可以初始化,因爲我已經在d使用區域傳遞它 – user2082957 2013-02-21 04:52:41