Backbone 视图之间的通信,不同的模式
Backbone communication between views , a different pattern
我读过有关调解器、事件聚合器的信息,使用 backbone.events ...等等
我需要关于下面的另一种潜在模式的建议,你认为这是邪恶的吗?还是好?如果不好的话 caveats/problems.
这个'pattern'回答了一个很经典的问题。当您在 View1 上单击某些内容时,View2 必须呈现。 View1 和 View2 是独立的(这不是子视图的情况)。在 View1 和 View2 之间,我们将使用 "Actions" 模块(是的,或多或少受到 react/flux 的启发)。
这是伪代码中的计划:
View1:
initialize:
Actions.subscribe(this, 'view2);
View2:
onclickwtv:
Actions.displayView2();
Actions:
this._Views = [];
subscribe(view, viewName):
this._Views[viewName] = view;
displayView2:
this._Views['view2'].render(); // or show or wtv function needed
删除视图后,我们将在操作中调用取消订阅函数,将特定视图从 _Views 数组中弹出。
此方案的目的是了解视图之间不同的潜在交互(而不是事件聚合器,在该事件聚合器中您没有中心位置来查看这些交互)。
迫不及待地想看看你对此的看法!
我会让 View2 在聚合器对象上触发一个事件:
onclickwtv: function () {
Aggregator.trigger('wtc-click');
}
我会让 View1 订阅这个事件:
initialize: function () {
this.listenTo(Aggregator, 'wtc-click', this.render);
}
让 View1 订阅 Actions 以便 Actions 可以调用 View1.render() 只是实现相同目的的一种迂回方式。你的解决方案有三个决策对象,我的只有两个。而且我的解决方案不需要管理视图状态 - 当调用其 .remove()
方法时,视图将停止监听聚合器。
我读过有关调解器、事件聚合器的信息,使用 backbone.events ...等等
我需要关于下面的另一种潜在模式的建议,你认为这是邪恶的吗?还是好?如果不好的话 caveats/problems.
这个'pattern'回答了一个很经典的问题。当您在 View1 上单击某些内容时,View2 必须呈现。 View1 和 View2 是独立的(这不是子视图的情况)。在 View1 和 View2 之间,我们将使用 "Actions" 模块(是的,或多或少受到 react/flux 的启发)。
这是伪代码中的计划:
View1:
initialize:
Actions.subscribe(this, 'view2);
View2:
onclickwtv:
Actions.displayView2();
Actions:
this._Views = [];
subscribe(view, viewName):
this._Views[viewName] = view;
displayView2:
this._Views['view2'].render(); // or show or wtv function needed
删除视图后,我们将在操作中调用取消订阅函数,将特定视图从 _Views 数组中弹出。
此方案的目的是了解视图之间不同的潜在交互(而不是事件聚合器,在该事件聚合器中您没有中心位置来查看这些交互)。
迫不及待地想看看你对此的看法!
我会让 View2 在聚合器对象上触发一个事件:
onclickwtv: function () {
Aggregator.trigger('wtc-click');
}
我会让 View1 订阅这个事件:
initialize: function () {
this.listenTo(Aggregator, 'wtc-click', this.render);
}
让 View1 订阅 Actions 以便 Actions 可以调用 View1.render() 只是实现相同目的的一种迂回方式。你的解决方案有三个决策对象,我的只有两个。而且我的解决方案不需要管理视图状态 - 当调用其 .remove()
方法时,视图将停止监听聚合器。