我有一个循环:
<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 question和Plunk。
感觉它应该有效,但我需要用_Original做一些事我必须在房产名称的末尾加上。
答案 0 :(得分:1)
试试这个表达式:
ng-model="CompleteDataSetViewModel.AnnualRecord.Target[measure.Name + '_Original']"
Angular表达式在技术上是一串可以解释的普通javascript代码,因此您可以使用任何有效的(有一些限制Angular解析器强加)表达式。所以上面应该适合你。