我有以下模型(请参阅我的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()
。有没有一种很好的方法来查找每个参数的元数据信息?
答案 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了。