Javascript 连接字符串以形成作用域属性

Javascript 连接字符串以形成作用域属性,javascript,angularjs,Javascript,Angularjs,我发现自己在Angular controller中重复了很多代码,因为我需要根据触发单击处理程序的元素更新作用域上的不同属性。以下是一个例子: vm.toggleEdit = function(activity) { if (activity === 'gain') { vm.editGain = !vm.editGain; vm.newGainLimit = ''; } else if (activity === 'loss') { vm.editLoss =

我发现自己在Angular controller中重复了很多代码,因为我需要根据触发单击处理程序的元素更新作用域上的不同属性。以下是一个例子:

vm.toggleEdit = function(activity) {
  if (activity === 'gain') {
    vm.editGain = !vm.editGain;
    vm.newGainLimit = '';
  } else if (activity === 'loss') {
    vm.editLoss = !vm.editLoss;
    vm.newWithdrawalLimit = '';
  } else {
    vm.editNeutral = !vm.editNeutral;
    vm.newNeutralLimit = '';
  }
};
我想做的是更有效地利用
活动
参数。例如:

vm.edit + activity = !vm.edit + activity;
这样做可能吗?

您可以写:

vm["edit" + activity] = whatever;
请注意,您的
活动
值以小写字母开头,因此您必须处理这个问题

看起来您的数据结构应该如下所示:

var vm = {
  gain: {
    edit: true,
    newLimit: ''
  },
  loss: {
    edit: false,
    newLimit: ''
  },
  // etc
};
这样,您的
activity
值将选择一个子对象,所有这些子对象都是相似的