将元数据附加到模型中的数组

时间:2014-08-20 14:12:00

标签: ember.js ember-data

我有以下模型(请参阅我的previous question):

slide: {
    "id": 1,
    "name": "stack-overflow-page",
    "type": "webpage",
    "parameters": [
        {"key": "url", "value": "http://stackoverflow.com"},
        {"key": "extension", "value": "/questions/ask"}
    ]
}

每个参数都有元数据,具体取决于幻灯片类型:

widget: {
    "id": "webpage",
    "description": "Renders a webpage.",
    "parameters": [
         {"key": "url", "type": "string", "description": "The base URL to show."},
         {"key": "extension", "type": "string", "description": "The rest of the URL to attach, or any parameters."}
    ]
}

目前,"小部件"元数据加载到控制器中(注意:这里使用了ember-cli):

import Ember from 'ember';

export default Ember.ObjectController.extend({
    widget: function() {
        return this.store.find('widget', this.get('model.type'));
    }.property('model.type'),
});

但是,在模板中使用参数时,我看不到查找每个参数的元数据信息(例如,显示参数的说明)。

{{#each parameters}}
    <div class="form-group">
        <label class="col-sm-2">{{key}}</label>
        <div class="col-sm-10">
            {{input type="text" value=value class="form-control"}}
        </div>
    </div>
{{/each}}

此外,如果我将元数据附加到模型中的每个参数,我认为它会被不必要地发送回服务器,因为parameters只是DS.attr()。有没有一种很好的方法来查找每个参数的元数据信息?

2 个答案:

答案 0 :(得分:1)

我相信EmbeddedRecord Mixin正是您所寻找的。它刚刚从Active Model序列化程序中抽象出来并添加到通用REST序列化程序in the most recent EmberData beta (Ember Data v1.0.0-beta.8)中,因此您可能需要升级才能使用它。您仍然需要为'参数'创建一个DS.Model,其中包含两个字段'key'和'value',以便正确序列化。

答案 1 :(得分:0)

您可以使用JSON或REST Serializer中的extractMeta钩子 - &gt; https://github.com/emberjs/data/blob/master/packages/ember-data/lib/serializers/json_serializer.js#L945解析您的元信息。

如果要访问manyArray上的metaData,则需要此补丁 - &gt; https://github.com/emberjs/data/commit/8544c29419d1ef909762a50beb434c219a34c846 我完全忘了它,我可以在一两天内合并它,这样你就不必自己编辑ED了。