Backbone.js事件触发器

时间:2013-02-20 12:16:39

标签: javascript backbone.js eventtrigger

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

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

2 个答案:

答案 0 :(得分: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'});

答案 1 :(得分:0)

我曾经写过自己的自定义内容,用于对双向模型/视图更改做出反应,这有点像维护上的痛苦。然后我找到了插件Backbone.ModelBinder

它使您想要实现的目标变得非常简单。在我链接到你的github自述页面上有一些很好的例子,所以我没有任何意义!如果一开始看起来有点令人困惑,我会说尽量让它工作,因为从长远来看这个插件会为你节省无数个小时,就像它对我来说一样。