是否可以将表达式用作ng-model指令的一部分?

时间:2014-11-11 11:42:12

标签: angularjs

我有一个循环:

<div ng-repeat="measure in CompleteDataSetViewModel.TargetMeasures">
</div>

在这里,我有一个像这样的输入:

<input ng-model="CompleteDataSetViewModel.AnnualRecord.Target[measure.Name]_Original"
          class="form-control input-lg annualTargetInput"
          type="number"
          ng-change="spreadTotal(measure.Id); updatePercentage(measure.Id)" />

如果我在循环中使用{{measure.Name}}它工作正常,但我希望它成为该输入的ng-model指令的一部分,因此它将作为CompleteDataSetViewModel.AnnualRecord.TargetElectricity_Original发出,因为这是我必须如何将其保存在数据库中。

我已经尝试了ng-model="CompleteDataSetViewModel.AnnualRecord.Target{{measure.Name}}_Original"ng-model="CompleteDataSetViewModel.AnnualRecord.Target[measure.Name]_Original"

前者产生:语法错误:令牌'{'是表达式第45列的意外标记。后一种方法产生:语法错误:令牌'_Original'是第59列的意外令牌

我发现一个旧的Google Group discussion似乎暗示[measure.Name]方法应该有效。还有a questionPlunk

感觉它应该有效,但我需要用_Original做一些事我必须在房产名称的末尾加上。

1 个答案:

答案 0 :(得分:1)

试试这个表达式:

ng-model="CompleteDataSetViewModel.AnnualRecord.Target[measure.Name + '_Original']"

Angular表达式在技术上是一串可以解释的普通javascript代码,因此您可以使用任何有效的(有一些限制Angular解析器强加)表达式。所以上面应该适合你。