骨干事件&;范围

Backbone Events & Scope

本文关键字:范围 事件      更新时间:2023-09-26

我是Backbone新手,希望获得一些最佳实践方面的帮助。以下是我的问题的简化版:

我在一个表单中有几个按钮,每个按钮都有自己的主干模型和视图。在Click上,我希望一些输入字段(在这些按钮的范围之外)用该按钮的值填充。

我想以一种可重用的方式编写它,所以我宁愿不定义一个简单地调用$("input").val(...);的事件处理程序。我也不太喜欢自定义事件的触发/监听。

我开发的解决方案是在选项哈希中传递一个函数,该函数最终由视图的事件处理程序调用。有没有更好的办法?谢谢!

小提琴:http://jsfiddle.net/pmn4/XW955/

Backbone是事件驱动的库,因此使用事件来减少应用程序部分的耦合是最佳实践。所以你可以在某个按钮被点击时触发视图上的事件,并在某种控制器/中介对象中监听它,这些控制器/中介对象知道应用程序的和平,并且可以在按钮被点击时改变输入。

var ButtonSetController = _.extend({
    start: function(){
        var buttonSetCollection = new ButtonList([{val: "A"}, {val: "B"}, {val: "C"}]),
            buttonSetView = new ButtonListView({collection: buttonSetCollection});
        this.listenTo(buttonSetView, "button:clicked", this.onButtonClicked);
        $("form").append(buttonSetView.render().el);  
    },
    onButtonClicked: function(button){
        $("input").val(button.get("val"));
    },
    stop: function(){
        this.stopListening();
    }
}, Backbone.Events);
ButtonSetController.start();

代码如下:http://jsfiddle.net/8aY3M/