Ember.js 与不相关组件的Ember路由通信
我知道EmberJS提倡“数据下降,动作上升”,但我有一个场景,我不确定如何适应这种模式。最好是我用一个和我想达到的目标类似的例子来解释 假设我有一个固定头组件(“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还是/
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);
}
老实说,我认为服务是完美的。事实上,总有一天我们会希望有一个路由服务。好吧,我只是觉得有一个服务只是为了这个功能太过分了。老实说,我认为一个服务是完美的。事实上,总有一天我们会希望有一个路由服务。好吧,我只是觉得有一个服务只是为了这个功能是过分的。我真的喜欢这个解决方案。我对使用服务犹豫不决,因为我只需要向组件发送一个小文本字符串,而一个服务似乎有点过头了。如果我决定需要发送更多数据,我仍然可以使用服务,但现在,您的解决方案工作得很好。我实际上喜欢这个解决方案。我对使用服务犹豫不决,因为我只需要向组件发送一个小文本字符串,而一个服务似乎有点过头了。如果我决定需要发送更多数据,我仍然可以使用服务,但现在,您的解决方案工作得非常好。