微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

backbone.js – 如何使用自定义事件将数据从一个视图传递到另一个视图?

我有一个查看,显示一个带有提交按钮的搜索框.
当我点击提交按钮,我如何将搜索框的值传递给另一个视图?

我试过了:
在视图1中,在submit回调内:this.trigger(‘abc’,$(‘#searchBox’).val())
在视图2中,在初始化函数中:this.bind(‘abc’,function(data){console.log(data);})

但这似乎不起作用:自定义事件被触发,但View 2看不到它.

解决方法

不幸的是你不能这样绑定 – 你需要在view2中共享一个view1的参考:
var View2 = Backbone.View.extend({
    initialize: function() {
        _.bindAll(this,'foo');
        this.view1.bind('abc',this.foo);        
    },foo: function(data) {
        console.log(data);
    }
});

这也意味着在某些时候你需要在View2的实例上设置view1,以便你可以绑定它.

如果您不想传递引用,只需将两个视图绑定在您所持有的任何容器(即另一个视图或控制器)中:

var view1 = new View1();
var view2 = new View2();

view1.bind('abc',view2.foo);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐