2

如何将更改事件绑定到模型从视图更改名称并在视图块中显示更改的名称。

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'});
4

2 回答 2

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'});
于 2013-02-20T13:01:23.107 回答
0

我曾经编写自己的自定义内容来响应双向模型/视图更改,这有点维护痛苦。然后我找到了插件Backbone.ModelBinder

它使您想要实现的目标变得非常容易。我将您链接到的 github 自述文件页面上有一些很好的示例,因此我没有任何意义!如果一开始看起来有点混乱,我会说尽力让它工作,因为从长远来看,这个插件会为你节省无数小时,就像它对我一样。

于 2013-02-20T12:33:26.053 回答