2013-02-20 95 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