Javascript 使用余烬数据创建新的嵌套模型特性
我有一个API,它有一个未定义的属性部分,名为app_data,用于存储随机数据。我试图确定如何从模板上的输入中获取值,并将其设置为app_数据的嵌套属性(称为tags)。我尝试了许多方法,但它们没有将任何数据应用到app_data.tags。任何帮助都将不胜感激Javascript 使用余烬数据创建新的嵌套模型特性,javascript,ember.js,Javascript,Ember.js,我有一个API,它有一个未定义的属性部分,名为app_data,用于存储随机数据。我试图确定如何从模板上的输入中获取值,并将其设置为app_数据的嵌套属性(称为tags)。我尝试了许多方法,但它们没有将任何数据应用到app_data.tags。任何帮助都将不胜感激 App.Photo = DS.Model.extend({ title: attr(), description: attr(), image: attr(), width: attr(), height: att
App.Photo = DS.Model.extend({
title: attr(),
description: attr(),
image: attr(),
width: attr(),
height: attr(),
important_top: attr(),
important_left: attr(),
important_bottom: attr(),
important_right: attr(),
created: attr('date'),
authors: hasMany('author'),
app_data: {
tags: []
},
imageURL: function() {
return document.location.origin + '/media/' + this.get('image');
}.property('image'),
});
App.PhotoseditRoute = Ember.Route.extend({
model: function() {
return this.store.find('photo');
},
});
App.PhotoseditController = Ember.ArrayController.extend({
actions: {
save: function() {
this.set('app_data.tags', 'test tag');
this.get('model').save();
}
}
});
<script type="text/x-handlebars">
<h2>Edit Photo Meta Data</h2>
<button {{action 'save'}} style="float:right;">Save All</button>
<table>
<thead>
<tr>
<th></th>
<th>Title</th>
<th>Description</th>
</tr>
</thead>
<tbody>
{{#each}}
<tr>
<td><img {{bind-attr src="imageURL"}} width="200" /></td>
<td>{{input title valueBinding="title"}}</td>
<td>{{input description valueBinding="description"}}</td>
<td>{{input tags valueBinding="tags"}}</td>
</tr>
{{else}}
<tr>
<td colspan="6">No photos yet.</td>
</tr>
{{/each}}
</tbody>
</table>
</script>
app_数据不是余烬对象,这就是为什么对其调用“set”不起作用的原因,您需要执行类似操作。获取“app_数据”。标记。推送“test tag”,谢谢您的帮助。如果我记录此。获取“应用程序数据”或此。获取“应用程序数据”。我收到未定义的标记。如果我像你建议的那样尝试获取和推送,我会收到一个错误:无法读取未定义的属性“tags”。我在你的代码中看到的是,你在“PhostosController”中有保存操作,这是复数版本,因此“app_data”不存在,它属于一张照片,而不是一组照片。因此,“保存”操作应该进入PhotoController,或者在调用“保存”时传递当前照片,并在“保存”操作中接收参数save:functionphoto。然后是photo.get'app_data'…我曾试图简化这个示例,使其易于解析,但这提供了错误的假设。我用模型和实际控制器名称更新了它。当我尝试传递photo参数时,它返回undefined.ok,根据模板,您正在执行“each”,这意味着您正在显示一组记录。正在控制器中调用保存操作,其内容是照片数组。这就是为什么这台电视机不起作用,很清楚,对吧?。由于该模板中的保存操作是“全局”的,因此无法发送“photo”对象,因为它不在“each”循环中。如果它在你的“每个”循环中,它将为每张照片显示。