我正在研究一些旧的代码,并且遇到了3种类似的构造以触发事件
- 命令/遵守
- 触发:
.command('update:mySetting', newSetting);
- 句柄:
.comply('update:mySetting', myCallback);
- 触发:
- listento/触发
- 触发:
.trigger('change');
- 句柄:
.listenTo(myModel, 'change', myCallback);
- 触发:
- 请求/回复
- 触发:
.request('change');
- 句柄:
.reply('change', myCallback);
- 触发:
这些事件有什么区别以及我什么时候应该使用它们?
谢谢
注意:我不确定它们是否来自木偶
https://github.com/marionettejs/backbone.radio
在提出请求时需要返回值时使用回复。
例如
Radio.channel('global').reply('something', function() { return 'something';});
// can also be
// Radio.channel('global').reply('something', 'something');
//... somewhere else in the code base
// someValue = 'something'
var someValue = Radio.channel('global').request('something');
您不必通过请求/回复返回任何内容,而只需将其用作运行功能的一种方式即可。这样做将使它像命令/遵守一样工作,这使得不需要命令/不需要。
您可以为请求提供一个答复,因此重新定义答复将覆盖最后一个定义。这是一对一的,为了回复,您有相应的请求。
// before
Radio.channel('global').reply('something', function() { return 'something';});
// somewhere else, it gets changed
Radio.channel('global').reply('something', 'not something');
酌情进行更改。
Trigger/Listento是典型的事件系统。
触发器可以从代码中的任何地方发出事件。
listento允许许多听众聆听该事件以执行射击时需要的事情。
Radio.channel('global').trigger('myEvent');
// somewhere in the code
view1.listenTo(Radio.channel('global'), 'myEvent', function() {
// do something
});
// somewhere else in the code
view2.listenTo(Radio.channel('global'), 'myEvent', function() {
// also do something
});