1

簡単に言うと、次のようにプロファイルにアクセスできるアプリがあります。

this.resource('user', {path: '/user/:user_id'});

これは、訪問者および (ログインしているユーザー) からアクセスできます。現在、ログインしているユーザー専用のメニューバーもあり、ユーザープロファイルへのリンクがあります (/user/:loggedin-user_id になります)。モデルのユーザーと ember データを認証するために ember-auth を使用しています。ここでの問題は、{{linkTo 'user'}} が機能しないことです。これは、あるユーザーが /user/28 にリンクし、次のユーザーが /user/15 にリンクするためです。単に彼/彼女自身のプロフィールに。どのIDを表示するかをどのように知る必要があるので、うまくいかないことがわかります(ただし、根本的な理由は完全にはわかりません)。Ember-Auth は App.Auth.get('userId') を提供して、現在ログインしているユーザーの ID を取得しますが、ember にそれを知らせる方法もよくわかりません。

だから私がしなければならなかったことは、手動でリンクを設定することです

<a {{bindAttr href="App.loggedInUser"}}>

この変数は、アプリケーション コントローラーで App.Auth.get('userId') を使用して正しい URL に設定されます。これは機能しますが、明らかにハックです。

それを解決する「残り火」の方法はありますか?

4

2 に答える 2

3

ember-auth dev はこちら。

ソリューションへのストレート:

まず、ember-auth にユーザーの現在のユーザー モデルをロードするように依頼します。App.Userユーザー モデルが と呼ばれ、 を実装すると仮定しますApp.User.find(id)

App.Auth = Ember.Auth.create
  # ...
  userModel: 'App.User' # default null
  # pass the string, not a class App.User

# access the current user model
# as with all things ember, this is loaded asynchronously
App.Auth.get('user')

(ドキュメントからコピー。)

次に、この動的モデルをハンドルバー リンクに渡します。

{{#linkTo 'user' App.Auth.user}}Link To Current User{{/link}}

またはそれ以外の場合-たとえば、へのバインディングApp.Auth.get('user')などにします。

念のため、(js)App.get('foo')は ember-handlebars と同等App.fooです。

于 2013-07-13T13:07:08.103 に答える
0

ルートuserに動的セグメントがあります。userモデルを に渡すlinkToと、アンカーは、渡されたユーザー モデルの ID に応じて、さまざまなユーザーのそのルートを指します。

{{linkTo 'user' userObj}}Profile{{/linkTo}}

渡されたモデルは ID を持つプレーンなオブジェクトにすることができ、デフォルトのシリアル化は引き続き機能します。したがってApp.Auth.get('userId')、id を持つオブジェクトにラップする場合、完全なモデル オブジェクトは必要ありません。

jsbinの例を次に示します。

于 2013-07-13T06:14:26.373 に答える