Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ember.js路由器应用程序架构&x2014;如何在松散耦合的组件之间正确通信_Javascript_Ember.js_Ember Old Router - Fatal编程技术网

Javascript Ember.js路由器应用程序架构&x2014;如何在松散耦合的组件之间正确通信

Javascript Ember.js路由器应用程序架构&x2014;如何在松散耦合的组件之间正确通信,javascript,ember.js,ember-old-router,Javascript,Ember.js,Ember Old Router,从架构上讲,控制器不知道视图(通常),当然也不知道其他一些控制器视图。控制器也不知道其他控制器。有时,这些松散耦合的组件必须能够通信,但最佳实践是不要将它们紧密耦合在一起。是否有允许不同组件在应用程序中发送和接收全局消息的消息框架插件?有没有更好的方法来处理此类通信?使用jQuery.Callbacks之类的东西创建发布/订阅中心并不难。但是,这不是典型的Ember.js应用程序的一部分 当发生需要在责任控制器范围之外进行通信的事情时,模式是将操作发送到路由器,在那里当前状态可以处理它。路由器/

从架构上讲,控制器不知道视图(通常),当然也不知道其他一些控制器视图。控制器也不知道其他控制器。有时,这些松散耦合的组件必须能够通信,但最佳实践是不要将它们紧密耦合在一起。是否有允许不同组件在应用程序中发送和接收全局消息的消息框架插件?有没有更好的方法来处理此类通信?

使用jQuery.Callbacks之类的东西创建发布/订阅中心并不难。但是,这不是典型的Ember.js应用程序的一部分

当发生需要在责任控制器范围之外进行通信的事情时,模式是将操作发送到路由器,在那里当前状态可以处理它。路由器/状态管理器是应用程序的协调器,可以通过向其他控制器和/或模型发送消息和/或转换到其他状态来响应操作


在我最近的一次演讲中,我试图对此进行图解:

使用jQuery.Callbacks之类的东西创建发布/订阅中心并不难。但是,这不是典型的Ember.js应用程序的一部分

当发生需要在责任控制器范围之外进行通信的事情时,模式是将操作发送到路由器,在那里当前状态可以处理它。路由器/状态管理器是应用程序的协调器,可以通过向其他控制器和/或模型发送消息和/或转换到其他状态来响应操作


我在最近的一次演讲中试图将这一点加以说明:

我对余烬还是个新手,但在这种情况下不会有用吗?它允许发布和订阅自定义事件。在中可以看到很好的解释。

我对Ember还是新手,但在这种情况下不会有用吗?它允许发布和订阅自定义事件。在中可以看到很好的解释。

也许这个问题可以帮助您:还有,@sly7_7谢谢!这很有帮助,感觉有点粗糙,但它会起作用。我只是讨厌强耦合;让他们彼此了解是不对的。是的,但现在,如果没有ConnectController,我不知道如何做到:(也许这个问题可以帮助你:@sly7_7谢谢!这很有帮助,感觉有点像黑客,但它会起作用。我只是讨厌这种强烈的结合;让他们知道彼此是不对的。是的,但现在,没有连接控制器我不知道怎么做:(谢谢卢克:)。在本演示中,您也提到了connectControllers,因此我认为这是控制器之间共享数据的一种好方法。这就是为什么我提出这一点作为一个评论。我错了吗?@sly7_7当一个控制器呈现另一个控制器的数据时,connectControllers很棒。但是,wmarbut提出了一个更一般的问题,关于如何进行不同的组件在Ember应用程序中进行通信。哼,一如既往,解释得很好。再次感谢:)我想我必须告诉两个词@tomdale,他想让主题记录下来。我认为使用ConnectController或发送到路由器转发到其他控制器的示例应该是一件好事。谢谢Luke:)。在本演示中,您也提到了ConnectController,因此我认为这是在控制器之间共享数据的好方法。这就是为什么我提出这个作为评论。我错了吗?@sly7_7当一个控制器显示另一个控制器的数据时,那么connectControllers就很棒了。然而,wmarbut提出了一个更一般的问题,关于不同组件在Ember应用程序中如何通信。哼,一如既往,这是一个很好的解释。再次感谢:)我想我必须告诉两个词@tomdale,他想记录这么多主题。我认为使用ConnectController或发送到路由器转发到其他控制器的示例应该是一件好事。我认为两者都是有效的。当@Luke发布他的答案时,我很确定余烬仪器不在,我认为这两个都是正确的。当@Luke发布他的答案时,很确定余烬仪器不在附近