假设我有一个显示带有提交按钮的搜索框的视图.当我点击提交按钮时,如何将搜索框的值传递给另一个视图?
我试过:
在视图1中,提交回调内部:this.trigger('abc', $('#searchBox').val())
在视图2中,在initialize函数中: this.bind('abc', function(data){ console.log(data); })
但这似乎不起作用:自定义事件被触发但View 2看不到它.
这是Derick Bailley @ LosTechies.com的精彩文章: 参考,路由和事件聚合器:Backbone.js中的协调视图
本文讨论使用Backbone.JS中构建的PubSub的简单解决方案.我同意德里克提到的观点应该是分离的.
不幸的是你无法以这种方式绑定 - 你需要在view2中共享对view1的引用:
var View2 = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'foo');
this.view1.bind('abc', this.foo);
},
foo: function(data) {
console.log(data);
}
});
Run Code Online (Sandbox Code Playgroud)
这也意味着在某些时候你需要设置view1你的实例,View2以便你可以绑定它.
如果您不想传递引用,只需将两个视图绑定在您持有它们的任何容器中(即另一个视图或控制器):
var view1 = new View1();
var view2 = new View2();
view1.bind('abc', view2.foo);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10050 次 |
| 最近记录: |