Ember.js 代表一个“列表”;“元组”;余烬
来自后端的数据具有以下(嵌入的)字段(这属于“联系人”对象)(Ember.js 代表一个“列表”;“元组”;余烬,ember.js,ember-data,Ember.js,Ember Data,来自后端的数据具有以下(嵌入的)字段(这属于“联系人”对象)(json): 格式就是电话号码元素的简单列表,依次是两个元素列表,其中包含以下两个字段: 字符串:电话类型 字符串:电话号码 我想在我的余烬申请中提供以下可能性: 删除电话号码 添加电话号码,指定电话类型(从下拉列表中选择)和电话号码 删除所有电话号码 如何使用余烬对象表示电话号码,以便轻松实现这两个操作 我已经开始使用DS.attr('raw'),但是我想我必须实现很多通用功能(比如:从数组中提取电话、提取电话类型、提取电话
json
):
格式就是电话号码元素的简单列表,依次是两个元素列表,其中包含以下两个字段:
- 字符串:电话类型
- 字符串:电话号码
- 删除电话号码
- 添加电话号码,指定电话类型(从下拉列表中选择)和电话号码
- 删除所有电话号码
DS.attr('raw')
,但是我想我必须实现很多通用功能(比如:从数组中提取电话、提取电话类型、提取电话号码等等)。有更好的办法吗?这是我目前的看法:
App.Contact = DS.Model.extend({
title : DS.attr('string'),
first_name : DS.attr('string'),
surname1 : DS.attr('string'),
surname2 : DS.attr('string'),
phone_numbers : DS.attr('raw'),
});
编辑
按照说明,我已开始定义自定义转换:
DS.RESTAdapter.registerTransform('phoneNumber', {
serialize: function(value) {
return [value.get('type'), value.get('number')];
},
deserialize: function(value) {
return Ember.create({ type: value[0], number: value[1] });
}
});
App.PhoneNumber = DS.Model.extend({
position: DS.attr('phoneNumber')
});
我的问题是,我不知道如何使用这个新的phoneNumber
类型来定义电话号码列表
:
App.Contact = DS.Model.extend({
...
phone_numbers : list of App.PhoneNumber ???
});
通过这样做得到:
DS.RESTAdapter.registerTransform('phoneNumbers', {
serialize: function(data) {
var phonenumbers = [], phonenumber;
for (var i = 0; i < data.length; i++) {
phonenumber = data[i];
phonenumbers.push([phonenumber.get('type'), phonenumber.get('number')]);
}
return phonenumbers;
},
deserialize: function(phonenumbers) {
var data = Ember.A(), phonenumber;
for (var i = 0; i < phonenumbers.length; i++) {
phonenumber = phonenumbers[i];
data.push(Ember.create({ type: phonenumber[0], number: phonenumber[1] }));
}
return data;
}
});
App.Contact = DS.Model.extend({
...
phone_numbers : DS.attr('phoneNumbers'),
});
DS.RESTAdapter.registerTransform('phoneNumbers'{
序列化:函数(数据){
var phonenumbers=[],phonenumber;
对于(变量i=0;i
DS.RESTAdapter.registerTransform('phoneNumbers', {
serialize: function(data) {
var phonenumbers = [], phonenumber;
for (var i = 0; i < data.length; i++) {
phonenumber = data[i];
phonenumbers.push([phonenumber.get('type'), phonenumber.get('number')]);
}
return phonenumbers;
},
deserialize: function(phonenumbers) {
var data = Ember.A(), phonenumber;
for (var i = 0; i < phonenumbers.length; i++) {
phonenumber = phonenumbers[i];
data.push(Ember.create({ type: phonenumber[0], number: phonenumber[1] }));
}
return data;
}
});
App.Contact = DS.Model.extend({
...
phone_numbers : DS.attr('phoneNumbers'),
});