我是Backbone的新手,希望获得最佳实践方面的帮助。这是我的问题的简化版本:
我在表单中有几个按钮,每个按钮都有自己的Backbone Model和View。单击时,我想要使用该按钮的值填充一些输入字段(在这些按钮的范围之外)。
我想以可重用的方式编写它,所以我宁愿不定义一个只调用$("input").val(...);
的事件处理程序。我也不是开发/收听自定义活动的忠实粉丝。
我开发的解决方案是在选项哈希中传递一个函数,该函数最终由View的事件处理程序调用。有没有更好的办法? 谢谢!
答案 0 :(得分:1)
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();