表示“元组”的列表在余烬 [英] Representing a list of "tuples" in ember

查看:79
本文介绍了表示“元组”的列表在余烬的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

来自后端的数据具有以下(嵌入式)字段(这属于联系人对象)( json ):

The data coming from the backend has the following (embedded) field (this belongs to a "contact" object) (json):

"phone_numbers" : [ ["mobile", "43534545354"], ["home", "4356346"] ]

格式只是一个简单的电话号码元素列表,依次是两个元素列表,其中包含两个字段:

The format is then just a simple list of phone number elements, in turn two-element lists, with these two fields:


  • string:电话类型

  • string:电话号码

我想在我的ember应用程序中提供以下可能性:

I would like to offer the possibility in my ember application to:


  • 删除一个电话号码

  • 添加一个电话号码,指定电话类型(从下拉列表中选择)和电话号码

  • 删除所有电话号码

如何使用ember对象来表示 phone_numbers ,以便轻松实现这些两个动作?

How can I represent phone_numbers using ember objects, in order to easily implement these two actions?

我已经开始使用 DS.attr('raw'),但我猜测我必须实现很多通用的功能(如:从数组中提取手机,提取手机类型,提取电话号码...)。有更好的aproach?这是我现在所做的:

I have started by using DS.attr('raw'), but I guess I will have to implement much generic functionality (like: extract phone from array, extract phone type, extract phone number, ...). Is there a better aproach? This is my current take:

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'),
});



编辑



href =http://emberjs.com/guides/models/the-rest-adapter/#toc_creating-custom-transformations =nofollow>这里,我已经开始定义一个自定义转换: p>

EDIT

Following the explanation here, I have started defining a custom transform:

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 类型以定义 phone_numbers 的列表:

The problem that I have is that I do not know how to use this new phoneNumber type to define a list of phone_numbers:

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'),
});

这篇关于表示“元组”的列表在余烬的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆