连接字符串以形成范围属性

时间:2015-09-04 14:13:16

标签: javascript angularjs

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

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 = '';
  }
};

我想要做的是更有效地利用activity参数。例如:

vm.edit + activity = !vm.edit + activity;

这样的事情可能吗?

1 个答案:

答案 0 :(得分:2)

你可以写:

vm["edit" + activity] = whatever;

请注意,您的activity值以小写字母开头,因此您必须处理此问题。

似乎您的数据结构可能如下所示:

var vm = {
  gain: {
    edit: true,
    newLimit: ''
  },
  loss: {
    edit: false,
    newLimit: ''
  },
  // etc
};

这样你的activity值就会选择一个子对象,所有这些都是相似的。