在路由之间传递隐藏参数
Posted
技术标签:
【中文标题】在路由之间传递隐藏参数【英文标题】:Passing hidden parameters between routes 【发布时间】:2014-06-30 17:09:30 【问题描述】:我对 Ember.js 很陌生,正在尝试创建一个需要浏览日期和记录隐私的应用程序
我想要做的是,我需要通过 ember 路由传递一个变量值而不在 url 上显示它
appcication_routes.js.coffee
App.Router.map ->
@resource 'user', path: '/user/:user_id' , ->
@resource 'user_feed', path: '/feed' , ->
@route 'posts', path: '/:date'
user_routes.js.coffee
App.UserFeedIndexRoute = App.Route.extend
activate: ->
controller = @controllerFor('user_feed.index')
controller.set 'checkPrivate', false
redirect: ->
@transitionTo 'user_feed.posts', @modelFor('user'), 'today'
App.UserFeedPostsRoute = App.Route.extend
activate: ->
controller = @controllerFor('user_feed.posts')
model: (params) ->
...
对于我在字符串下面使用的控制器的转换
@transitionToRoute 'user_feed.posts', @get('user'), newDateString
我需要将 checkPrivate 的值传递给 UserFeedPosts 但不将其显示给 url,我还需要在日期更改或 checkPrivate 值更改时再次调用路由。
我用谷歌搜索了很多,但成功率为零。
【问题讨论】:
【参考方案1】:您可以使用共享控制器 (Ember Guide) 来保存私有变量的状态。
App.ApplicationController = Em.Controller.extend(
checkPrivate: null
);
然后,如果您想在特定控制器中访问此值,您可以使用 needs 导入它。
App. UserFeedPostsController = Em.ArrayController.extend(
needs: ['application']
);
App.ApplicationController = Em.Controller.extend(
needs: ['application']
);
如果您的案例不需要从其他控制器访问数据,您始终可以从任何路由访问特定控制器:
this.controllerFor('application');
【讨论】:
非常感谢ppcno。这帮助很大以上是关于在路由之间传递隐藏参数的主要内容,如果未能解决你的问题,请参考以下文章