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)。相反,我被迫创建一个用户列表(只有一个用户),并给它一个假 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为它生成一个,它期望它content是一个数组。

更改model挂钩以返回单个记录。例如使用作为 id。

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

然后你的模板工作。请参阅更新的jsfiddle

于 2013-06-27T12:18:43.053 回答