我对Ember.js很新,并试图创建一个应用程序,我需要浏览日期和记录的privecy
我想要做的是,我需要通过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值更改时调用路由againg。< / p>
我已经google了很多,但没有成功。
答案 0 :(得分:4)
您可以使用共享控制器(Ember Guide)来保存私有变量的状态。
App.ApplicationController = Em.Controller.extend({
checkPrivate: null
});
然后,如果您希望在特定控制器中访问此值,则可以使用需要导入该值。
App. UserFeedPostsController = Em.ArrayController.extend({
needs: ['application']
});
App.ApplicationController = Em.Controller.extend({
needs: ['application']
});
如果您的案例不需要从其他控制器访问数据,您始终可以从任何路径访问特定控制器:
this.controllerFor('application');