1

すべてを正しく設定したとしましょう。モデルApp.Userがあり、コントローラーがありApp.UsersIndexUserControllerます。


良い 良い 良い 良い 良い

次のビュー テンプレート ...

<script type="text/x-handlebars" data-template-name="users_index_template">
  {{#each user in users}}
    {{log user}}
    {{#linkTo users.user user}}{{user.name}}{{/linkTo}}
  {{/each}}
</script>

...これにより、ブラウザのconsole.logに次のように出力されます...

<App.User:ember258> { created_at="2013-03-05T01:51:15Z", id=76 ... etc ... }

バッドバッドバッドバッドバッド

ただし、itemControllerテンプレートでディレクティブを使用する場合は、次のように...

<script type="text/x-handlebars" data-template-name="users_index_template">
  {{#each user in users itemController="usersIndexUser"}}
    {{log user}}
    {{#linkTo users.user user}}{{user.name}}{{/linkTo}}
  {{/each}}
</script>

...これにより、ブラウザのconsole.logに次のように出力されます...

<App.UsersIndexUserController:ember253> { target=<Ember.ArrayController:ember245> ... etc ... }

どちらの場合も{{log user}}のインスタンスを返すことを期待しています。App.Userしかし、上記のように、ディレクティブを使用する場合はインスタンスをApp.UsersIndexUserController返し、ディレクティブを使用しないitemController場合はインスタンスを返します。App.UseritemController

App.UsersIndexUserController上記の両方のケースで、{{log user}}が返されるようなオブジェクトを明示的に返す必要がありApp.Userますか?

App.UsersIndexUserController = Ember.ObjectController.extend({
});

私はEmber.js v1.0.0-rc1を使用しています

// Version: v1.0.0-rc.1
// Last commit: 8b061b4 (2013-02-15 12:10:22 -0800)
4

1 に答える 1

5

この行為は正しいと思います。2 番目のケースでは、各ユーザー オブジェクトをプロキシ (UsersIndexUserController) でラップするように ember に明示的に指示しています。したがって、変数 user をログに記録すると、このプロキシのインスタンスが生成されます。デバッグの観点から、ログ ヘルパーの動作には完全に同意します。最初は直感的ではないかもしれませんが、そうでない場合は、そこで作業している実際のオブジェクトが表示されません。itemController が name とも呼ばれる計算されたプロパティを定義すると想像してください。この場合、{{user.name}} はモデルではなくコントローラのプロパティにアクセスします。これはおそらくエラーである可能性があり、ヘルパーのこの動作により、エラーをより簡単に見つけることができます。

于 2013-03-10T09:03:51.803 に答える