Marionette command/comply、listento/trigger、request/reply 之间的区别
Marionette difference between command/comply, listento/trigger, request/reply
我正在处理一些遗留代码,遇到了 3 个类似的触发事件结构
- command/comply
- 触发器:
.command('update:mySetting', newSetting);
- 句柄:
.comply('update:mySetting', myCallback);
- listento/trigger
- 触发器:
.trigger('change');
- 句柄:
.listenTo(myModel, 'change', myCallback);
- request/reply
- 触发器:
.request('change');
- 句柄:
.reply('change', myCallback);
这些事件有什么区别,我应该在什么时候使用它们?
谢谢
注:我不确定是否全部来自marionette
https://github.com/marionettejs/backbone.radio
当您需要在发出请求时 return 一个值时使用回复。
例如
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');
您不必 return 使用 request/reply 任何东西,只需将它用作 运行 函数的一种方式。这样做会使它像 command/comply 一样工作,从而不需要 command/comply。
一个请求可以有一个回复,因此重新定义一个回复将覆盖最后一个定义。是一对一的,有回复就有对应的要求。
// 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
});
我正在处理一些遗留代码,遇到了 3 个类似的触发事件结构
- command/comply
- 触发器:
.command('update:mySetting', newSetting);
- 句柄:
.comply('update:mySetting', myCallback);
- 触发器:
- listento/trigger
- 触发器:
.trigger('change');
- 句柄:
.listenTo(myModel, 'change', myCallback);
- 触发器:
- request/reply
- 触发器:
.request('change');
- 句柄:
.reply('change', myCallback);
- 触发器:
这些事件有什么区别,我应该在什么时候使用它们?
谢谢
注:我不确定是否全部来自marionette
https://github.com/marionettejs/backbone.radio
当您需要在发出请求时 return 一个值时使用回复。
例如
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');
您不必 return 使用 request/reply 任何东西,只需将它用作 运行 函数的一种方式。这样做会使它像 command/comply 一样工作,从而不需要 command/comply。
一个请求可以有一个回复,因此重新定义一个回复将覆盖最后一个定义。是一对一的,有回复就有对应的要求。
// 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
});