Jquery 用bindTo传递bindData的木偶

Jquery 用bindTo传递bindData的木偶,jquery,bind,marionette,jquery-events,Jquery,Bind,Marionette,Jquery Events,有没有一种方法可以将bindData传递给木偶的bindTo,类似于jQuery的bind 我在jQuery的网站上看到,您可以执行以下操作来传递bindData: function myFunction(event){ console.log(event.data.foo); // output "bar" }; $(".some-element").bind("click", {foo:"bar"}, m

有没有一种方法可以将bindData传递给木偶的
bindTo
,类似于jQuery的bind

我在jQuery的网站上看到,您可以执行以下操作来传递bindData:

function myFunction(event){
    console.log(event.data.foo); // output "bar"
};
$(".some-element").bind("click", {foo:"bar"}, myFunction);
我之所以要这样做,是因为我要将多个函数绑定到一个路由

第一个函数只使用路由中的参数,没有什么特别之处。
第二个函数需要向其传递自定义数据,这就是bindData的作用

控制器和路由器

第一次绑定
这很好地工作,当导航到该路径时,我会在控制台上打印itemId

var MyLayout = Marionette.Layout.extend({
    initialize: function(){
        _.bindAll(this);
    },
    myFunction: function(itemId){
        console.log(itemId);
    }
});

var myLayout = new MyLayout();
myLayout.bindTo(Vent, "openPageOne", myLayout.myFunction);
第二次绑定
这就是我失败的地方:(
我想向函数传递一个自定义数据对象。
在另一个函数中,我想显示foo的值

var AnotherLayout = Marionette.Layout.extend({
    initialize: function(){
        _.bindAll(this);
    },
    anotherFunction: function(event){
        // Here is where I want to use foo
        console.log(event.data.foo);
    }
});

var anotherLayout = new AnotherLayout();
anotherLayout.bindTo(Vent, "openPageOne", {foo:"bar"}, anotherLayout.anotherFunction);
更具体地说,第一个函数应该更改我的页面内容。第二个函数应该突出显示我的导航菜单中的一个项目。我想发送给我的函数的自定义对象基本上是菜单项的元素ID,这样我就可以向其中添加一个类


我是不是走错了路?任何输入都会有帮助。

不确定这是否有帮助,但我倾向于在木偶中使用Vent

var app = new Backbone.Marionette.Application();
然后我使用listenTo(替换bindTo)事件激发,当它激发时我触发

app.vent.trigger('App:openPageOne', { 'foo': 'bar'});
然后在你的倾诉中

app.vent.on('App:openPageOne', function(data) {
}
您的数据将发送到数据参数:data.foo

还可以在对象{'foo1':'bar1','foo2':'bar2}内发送更多数据


我喜欢使用应用程序事件管理器。

Kalpers:谢谢你的回复。这种方法会起作用。事实上,直接绑定到Vent是传递触发时间数据的一种方式。不过,据我所知,如果你直接绑定到Vent,你就有在视图终止后触发僵尸事件的风险(如果我错了,请纠正我).这就是我尝试执行View.bindTo(现在是View.listenTo)的原因,但我想如果我们手动解除绑定,我们可以绕过这个问题?:/Bah也许我不知道我在说什么。我还没有看到通风口上使用的ListenTo,但我有一个由木偶触发的onClose方法,我删除了绑定。我真的很喜欢木偶。你真的必须调试代码才能真正了解它在做什么。我将当我看到信息时,请更新此评论。谢谢您提出此问题。
app.vent.on('App:openPageOne', function(data) {
}