重构角度javascript

时间:2015-09-22 07:46:24

标签: javascript angularjs

我在角度控制器中有这个javascript工作正常。

product.prod_custom_mb_qty = 0;
product.prod_custom_mb = null;
product.prod_custom_autoship = function (prod_name, prod_qty) {
  if (prod_name === "mb") {
    if (prod_qty === 0) {
      product.prod_custom_mb_qty = 0;
    } else {
      product.prod_custom_mb_qty += prod_qty;
    }
  }
  if (product.prod_custom_mb_qty < 1){
    product.prod_custom_mb_qty = 0;
    product.prod_custom_mb = null;
  } else if (product.prod_custom_mb_qty === 1) {
    product.prod_custom_mb = product.prod_custom_mb_qty + " Mango Bottle";
  } else if (product.prod_custom_mb_qty > 1) {
    product.prod_custom_mb = product.prod_custom_mb_qty + " Mango Bottles";
  }
  product.prod_custom_total = (product.prod_custom_mb_qty * 35);
}

问题是我需要为8种不同的产品再做8次,这样会有点麻烦。 有没有办法可以重构这一点,所以一切都可以更简单地完成?

我认为我可以通过将名称更改为var来实现:

product.prod_custom_qty[prod_name]
product.prod_custom[prod_name]

但我似乎无法让它发挥作用?我是在正确的轨道上吗?

1 个答案:

答案 0 :(得分:0)

我建议组织它:

var products = [];
var productCount = 8;

while(productionCount--) {
    var newProduct = {
        prod_custom_mb_qty: 0,
        prod_custom_mb: null
    };
    pruducts.push(newProduct);
    processProduct(newProduct);
}

function processProduct (product) {
    // Update your product properties here.
}