Передача скрытых параметров между маршрутами

Я новичок в 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.

Я много гуглил, но безуспешно.


person Jeet    schedule 13.05.2014    source источник


Ответы (1)


Вы можете использовать общий контроллер (Руководство по Ember), который сохраняет состояние частная переменная.

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');
person ppcano    schedule 13.05.2014
comment
Большое спасибо ppcno. Это очень помогло - person Jeet; 13.05.2014