【问题标题】:how to dynamically generate model names in a service如何在服务中动态生成模型名称
【发布时间】:2016-01-11 02:18:32
【问题描述】:

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

 "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;

};

};

【问题讨论】:

    标签: javascript jquery angularjs lodash linq.js


    【解决方案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
    • 真的吗?我以为我弄错了,但与您描述的方向相反。请参阅我修改后的答案,了解我应该如何理解......
    • 好的,它有效。但我解释错了。我要改变的价值。现在你做到了,所以关键改变了。模型需要保持不变。
    • 模型需要保持不变?我不明白。您能否举个例子说明您希望 "sectionInputs" 数组最终看起来如何?
    • plunker json 有一个包含 3 个对象的数组。每个对象都有一个嵌套数组“sectionInputs”。第一个 sectionInput 数组需要在属性值的末尾添加“1”,“price_min1”、price_max1 等......然后在下一个 sectionInput 数组需要在每个属性值的末尾添加“2” . price_min2,price_max2 等...
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      • 2023-03-27
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多