3

私は Ember.js を初めて使用し、日付とレコードのプライバシーを確​​認する必要があるアプリケーションを作成しようとしています。

私がやりたいことは、URLに表示せずにemberルートを介して1つの変数値を渡す必要があることです

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 の値の変更時に再度ルートを呼び出す必要があります。

私はそれをたくさんグーグルで検索しましたが、成功はゼロです。

4

1 に答える 1

4

プライベート変数の状態を保存する共有コントローラー ( 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');
于 2014-05-13T06:53:22.583 に答える