Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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
Ember.js 与不相关组件的Ember路由通信_Ember.js_Ember Router_Ember Components - Fatal编程技术网

Ember.js 与不相关组件的Ember路由通信

Ember.js 与不相关组件的Ember路由通信,ember.js,ember-router,ember-components,Ember.js,Ember Router,Ember Components,我知道EmberJS提倡“数据下降,动作上升”,但我有一个场景,我不确定如何适应这种模式。最好是我用一个和我想达到的目标类似的例子来解释 假设我有一个固定头组件(“fixed header”)。我希望此标题始终显示,因此我当然会将其添加到我的主应用程序模板中: {{fixed-header}} {{outlet}} 现在让我们假设我希望我的标题显示一些关于我所在路线的信息。为了简单起见,假设每条路线都有一个标题,我想显示在固定的标题中。因此,无论我是在/foo还是/foo/bar/baz还是/

我知道EmberJS提倡“数据下降,动作上升”,但我有一个场景,我不确定如何适应这种模式。最好是我用一个和我想达到的目标类似的例子来解释

假设我有一个固定头组件(“
fixed header
”)。我希望此标题始终显示,因此我当然会将其添加到我的主应用程序模板中:

{{fixed-header}}
{{outlet}}
现在让我们假设我希望我的标题显示一些关于我所在路线的信息。为了简单起见,假设每条路线都有一个标题,我想显示在固定的标题中。因此,无论我是在
/foo
还是
/foo/bar/baz
还是
/wackawaka/meh?cat=meow
,我都希望该路由能够将一些数据发送到
固定标题
组件以显示。换句话说,我有点想反对“数据下降”而做“数据上升”


理想的方法是什么?我的第一反应是创建一个
My header
监听的服务,路由可以向其发布信息。但这是正确的做法吗?在我看来,创建一个服务只是为了发送一点文本似乎很奇怪。还有别的办法吗

服务才是出路。提及

服务是一个在应用程序期间存在的余烬对象,可以在应用程序的不同部分中使用。 服务对于需要共享状态或持久连接的功能非常有用


服务才是出路。提及

服务是一个在应用程序期间存在的余烬对象,可以在应用程序的不同部分中使用。 服务对于需要共享状态或持久连接的功能非常有用


可以为组件使用参数

{{fixed-header info=headerInfo}}
{{outlet}}
然后在任何路线的某个钩子上

setupController: function(controller, model) {
  this._super(controller, model);
  var headerInfo = ...
  this.controllerFor('application').set('headerInfo', headerInfo);
}

可以为组件使用参数

{{fixed-header info=headerInfo}}
{{outlet}}
然后在任何路线的某个钩子上

setupController: function(controller, model) {
  this._super(controller, model);
  var headerInfo = ...
  this.controllerFor('application').set('headerInfo', headerInfo);
}

老实说,我认为服务是完美的。事实上,总有一天我们会希望有一个路由服务。好吧,我只是觉得有一个服务只是为了这个功能太过分了。老实说,我认为一个服务是完美的。事实上,总有一天我们会希望有一个路由服务。好吧,我只是觉得有一个服务只是为了这个功能是过分的。我真的喜欢这个解决方案。我对使用服务犹豫不决,因为我只需要向组件发送一个小文本字符串,而一个服务似乎有点过头了。如果我决定需要发送更多数据,我仍然可以使用服务,但现在,您的解决方案工作得很好。我实际上喜欢这个解决方案。我对使用服务犹豫不决,因为我只需要向组件发送一个小文本字符串,而一个服务似乎有点过头了。如果我决定需要发送更多数据,我仍然可以使用服务,但现在,您的解决方案工作得非常好。