骨干事件&;范围
Backbone Events & Scope
我是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/
相关文章:
- firefox中的Javascript事件范围问题
- 是否可以在jQuery事件中更改Angular范围
- 如何在Jasmine/Rect中测试带有范围输入的“onChange”事件
- 为什么我从 JSLint 获得从事件调用的函数的“超出范围”
- $scope之后未更新角度范围$在$broadcast之后的事件上
- Extjs 4,事件处理,范围,自定义组件
- 如何获取整个 JavaScript 范围内上次单击的事件数据
- 如何启用事件单击仅在指定的小时范围内
- 在指令的链接函数中修改事件中的范围变量
- 范围滑块输入事件在 IE 10 中未触发
- 使用带有 AngularJS 的 onclick 事件重置范围
- 事件调用和范围问题
- JavaScript 事件处理程序函数范围控件
- 使用 noUiSlider 通过点击事件创建范围时出错
- 如何为范围滑块创建事件处理程序
- 事件的角度更新范围
- 如何“范围”事件监听器
- Angularjs禁用鼠标范围事件
- 可变范围&事件触发匿名函数
- 使用jQuery UI datepicker验证日期范围:事件顺序