Ember.js 允许模型包含对象数组
是否有可能拥有一个包含对象数组的模型,而不将这些对象分离为具有唯一ID的对象 例如,我有一张包含多个参数的幻灯片,这些参数可能来自API:Ember.js 允许模型包含对象数组,ember.js,ember-data,Ember.js,Ember Data,是否有可能拥有一个包含对象数组的模型,而不将这些对象分离为具有唯一ID的对象 例如,我有一张包含多个参数的幻灯片,这些参数可能来自API: slide: { "id": 1, "name": "stack-overflow-page", "type": "webpage" "parameters": [ {"key": "url", "value": "http://stackoverflow.com"}, {"key": "ext
slide: {
"id": 1,
"name": "stack-overflow-page",
"type": "webpage"
"parameters": [
{"key": "url", "value": "http://stackoverflow.com"},
{"key": "extension", "value": "/questions/ask"}
]
}
在我的幻灯片配置页面上,我想配置幻灯片及其参数列表。由于这些参数没有显式的ID复合ID-SlideID,Key,所以将它们分开并对每个参数进行API调用似乎很奇怪
如何配置和使用这样的模型?最简单的方法是
parameters: DS.attr()
您可以定义自己的数组变换,但前提是您需要/想要专门的行为。如果更改数组元素中的某些内容,则必须自己处理dirtification,您可以使用dirtification
model
.set('parameters.firstObject.key', 'www.google.com')
.notifyPropertyChange('parameters');
这里的参数不是一个模型;它只是幻灯片模型的一个数组值字段。为什么您认为您需要将它们分离(意思是…?)和/或为它们进行单独的API调用?您能在这里使用DS.attr定义一个值数组吗?我需要定义自己的转换吗?我的问题更多的是如何正确定义幻灯片模型。最简单的方法是简单地执行参数:DS.attr。您可以定义自己的数组变换,但前提是您需要/想要专门的行为。@torazaburo您是对的,它比我预期的要简单。我假设如果它不是文档中定义的类型之一、字符串、数字、布尔值和日期,那么DS.attr将无法正确解析。这里唯一的缺点是isDirty不处理参数,但这是有意义的,我可以解决这个问题。如果你创造了一个答案,我可以标记你是正确的。