【问题标题】:Using Ember Data, but properties on model not rendered使用 Ember 数据,但未渲染模型上的属性
【发布时间】:2013-02-20 05:38:18
【问题描述】:

我刚刚开始使用 Ember 和 Ember Data。我有一个非常简单的服务,它正在访问我的后端服务(用 Node 编写)。我的服务返回两个项目。在我的 HTML 中,我的两个项目显示,或者至少它们的 ID 显示。其他属性未呈现。

结果:

* Hello, 1 !
* Hello, 2 !

app.js

var App = Ember.Application.create();

App.Store = DS.Store.extend({
    revision: 11
});

App.Grunt = DS.Model.extend({
    firstName: DS.attr('string'),
    lastName: DS.attr('string')
});

App.Router.map(function() {
    this.route("grunts", { path: "/grunts" });
});

App.IndexRoute = Ember.Route.extend({
    redirect: function() {
        this.transitionTo('grunts');
    }
});

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

index.html

<script type="text/x-handlebars" data-template-name="application">
    <div>
        <p>{{outlet}}</p>
    </div>
</script>

<script type="text/x-handlebars" data-template-name="grunts">
    <ul>
        {{#each controller}}
            <li>Hello, {{id}} {{firstName}} {{lastName}}!</li>
        {{/each}}
    </ul>
</script>

JSON:

{
    "grunts": [
        {
            "id": 1,
            "firstName": "Joe",
            "lastName": "Bloggs"
        },
        {
            "id": 2,
            "firstName": "Someone",
            "lastName": "Else"
        }
    ]
}

感谢您的帮助!

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    默认的RESTAdapter 映射是下划线 -> 驼峰形式。这意味着如果你的模型属性是firstName,服务器应该发送包含first_name的JSON。

    要解决此问题,您可以发送如下所示的 JSON:

    "grunts": [
      {
        "id": 1,
        "first_name": "Joe",
        "last_name": "Bloggs"
      }]
    

    或者覆盖RESTSerializer 中的keyForAttributeName 函数。 对于一对一的映射,您可以这样做:

    keyForAttributeName: function(type, name) {
      return name;
    }
    

    或者像这样映射单个模型:

    adapter.map('App.Grunt', { 
      firstName: { keyName: 'firstName'},
      lastName: { keyName: 'lastName'}
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多