Передача скрытых параметров между маршрутами
Я очень новичок в 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
});
Затем, если вы хотите, чтобы это значение было доступно в конкретном контроллере, вы можете импортировать его с потребностями.
App. UserFeedPostsController = Em.ArrayController.extend({
needs: ['application']
});
App.ApplicationController = Em.Controller.extend({
needs: ['application']
});
Если в вашем случае не требуется доступ к данным с другого контроллера, вы всегда можете получить доступ к определенному контроллеру с любого маршрута, как:
this.controllerFor('application');