2

このjsfiddleを用意しました。これはコードです:

App = Ember.Application.create();

App.Store = DS.Store.extend({
    revision: 13,
    adapter: 'DS.FixtureAdapter'
});

App.Router.map(function() {
    // put your routes here
});

App.User = DS.Model.extend({
    name : DS.attr('string'),
    email : DS.attr('string'),
});

App.User.FIXTURES = [{ id: 'me', name: 'Max Smith', email: 'max.smith@email.com' }];

App.IndexRoute = Ember.Route.extend({
    model: function() {
        return App.User.find();
    }
});

そして、これはテンプレートです:

  <script type="text/x-handlebars" data-template-name="index">
    {{#each model}}
    <div class="form_labels_wrapper">
      <dl class="dl-horizontal">
        <dt>Id:</dt>               <dd>{{id}}</dd>
        <dt>Name:</dt>             <dd>{{name}}</dd>
        <dt>Email:</dt>            <dd>{{email}}</dd>
      </dl>
    {{/each}}
    </div>
  </script>

私がやりたいことは、単一のユーザーのデータを表示することです。opbject には ID がありません (セッション関連のログイン ユーザーを表し、ember には ID が表示されません)。代わりに、(1 人のユーザーを含む) ユーザーのリストを作成し、それに偽の ID ( me) を与える必要があります。これは私のアプリケーションでは意味がありません。

このテンプレートを使用したいのですが、ember を設定する方法がわかりません:

  <script type="text/x-handlebars" data-template-name="index">
    <div class="form_labels_wrapper">
      <dl class="dl-horizontal">
        <dt>Name:</dt>             <dd>{{name}}</dd>
        <dt>Email:</dt>            <dd>{{email}}</dd>
      </dl>
    </div>
  </script>

このフィクスチャで:

App.User.FIXTURES = { name: 'Max Smith', email: 'max.smith@email.com' };

これは単一の要素であり、 を使用してモデルをループしていないことに注意してください。これは#eachリストであってはならないためです。単一の要素しかありません。

Ember はこれを受け入れることを拒否します。これを機能させるにはどうすればよいですか?

4

1 に答える 1

1

フックからレコードの配列を返すことができますmodel。その結果、ember は、それが配列ArrayControllerであることを期待する for を生成contentします。

model単一のレコードを返すようにフックを変更します。たとえば、を ID として使用します。

App.IndexRoute = Ember.Route.extend({
    model: function() {
        return App.User.find('me');
    }
});

その後、テンプレートが機能します。更新されたjsfiddleを参照してください。

于 2013-06-27T12:18:43.053 に答える