更新数组中基于模型的对象的所有实例的成员值?

时间:2016-02-28 09:12:10

标签: typescript angular

我很高兴学习Angular2 + Typescript,并想知道是否有办法更新数组中所有基于模型的对象的特定成员的所有值,非常简单(例如单行)。

例如,假设你有这个模型:

export class x1Model{
    status:string = "";
    isAssigned:boolean = false;
    isDefault:boolean = false;
    isRequested:boolean = false;

    constructor(public label:string = ""){}

    toggle():void{
        this.isDefault = !this.isDefault
    }
}

你有这项服务:

export class x1Service{
    x1s = [
        new x1Model("Orange Racer"),
        new x1Model("Wife's Sunday Driver"),
        new x1Model("Weekend Bucket")
    ];

    addX1(x1:x1Model){
        this.x1s = [...this.x1s, x1];
    }

    toggleDefault(x1:x1Model){
        //get index of x1 to set as default
        const x = this.x1s.indexOf(x1);

        //set all as default=false
        set(item.default,false,this.x1s);

        //toggle passed x1 as default
        x1.toggle();

        //update global list
        this.x1s = [
            ...this.x1s.slice(0,x),
            x1,
            ...this.x1s.slice(x+1)                
        ];

    }
}

所以我想知道的是,如果有一种漂亮的方式可以做我所表现的

set("a model's variable", "the new value", "the list of objects of Model type");

无需编写" set"功能

我认为,如果模型概念可以或者扩展为允许快速方式将模型的一个或多个变量的覆盖/更新/掩码版本传递给任何数量的对象,那将会很好。模型类型,并进行更新。

1 个答案:

答案 0 :(得分:4)

使用forEach非常简单:

this.x1s.forEach(x1 => x1.default = false);

它比一个神奇的set函数读得更好。