如何在服务中动态生成模型名称

时间:2016-01-11 02:18:33

标签: javascript jquery angularjs lodash linq.js

我有一项服务,用于将唯一编号应用于模型名称。我得到的结果是这个

 "sectionInputs": [
  {
    "model": "price_min1"
  },
  {
    "model": "price_max2"
  },
  {
    "model": "units_occ3"
  },
  {
    "model": "inv_mod4"
  },
  {
    "model": "inv_fin5"
  },
  {
    "model": "inv_vdl6"
  },
  {
    "model": "inv_uc7"
  },
  {
    "model": "inv_fut8"
  },
  {
    "model": "inv_con9"
  },
  {
    "model": "units_total10"
  }
]

我需要每个都有'1'。然后在下一个对象数组中我需要它们有'2'等等...截至目前,每个对象数组都是这样的。我有一个设置一切的plunker。 plunker

function sectionInputSvc(sectionInputs) {

var vm = this;

vm.sectionInputsArry = sectionInputs;

vm.sectionInputs = function () {
    var arry = [];
    var counter = 0;

    for (var i = 0; i < vm.sectionInputsArry.length; i++) {
        counter++
        var obj = {
            model: vm.sectionInputsArry[i].model + counter
        };
        arry.push(obj);
    };

    return arry;

};

};

2 个答案:

答案 0 :(得分:1)

[编辑2]

在app.js中

...

sections[i].sectionInputs = sectionInputSvc.sectionInputs(sections[i],i);

和section.service.js ...

    function sectionInputSvc(sectionInputs) {

    var vm = this;

    vm.sectionInputsArry = sectionInputs;
    var obj2={};

    vm.sectionInputs = function (obj2,num) {
        var arry = [];
        var counter = 0;

        for (var i = 0; i < vm.sectionInputsArry.length; i++) {
            counter++
            var obj = {
            model: vm.sectionInputsArry[i].model + num
        };
            arry.push(obj);
        };

        return arry;

    };
};

答案 1 :(得分:1)

使用linq.js,并假设名称上不存在后缀:

vm.sectionInputs = function () {
    return Enumerable.From(vm.sectionInputsArry).Zip(Enumerable.ToInfinity(1),
        "{ model: $.model+$$ }"
    ).ToArray();
};