链接到单个对象的路由,没有id

时间:2013-06-27 11:34:55

标签: ember.js ember-data

我准备了这个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)。相反,我被迫创建一个用户列表(有一个用户),并给它一个假身份证(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循环遍历模型,因为这不应该是一个列表:只有一个元素。

艾登拒绝接受这一点。我该怎么做才能让它发挥作用?

1 个答案:

答案 0 :(得分:1)

你可以从model钩子返回一个记录数组,因为ember正在为它生成一个ArrayController,它希望它是一个数组content

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

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

然后您的模板有效。请参阅更新的jsfiddle