如果他们检查了这样的条件,我需要显示/隐藏多个元素:
<div id="LineSingleDate" ng-if="VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants.SingleDate; })"></div>
<div id="LineSpotlight" ng-if="VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants.InSpotlight; })"></div>
<div id="LineSubtitle" ng-if="VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants.Subtitle; })"></div>
<div id="LineResumeDescription" ng-if="VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants.ResumeDescription; })"></div>
<div id="LineLocation" ng-if="VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants.Location; })"></div>
<div id="LineCoordinatesGPS" ng-if="VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants.CoordinatesGPS; })"></div>
<!--and 20 more others-->
但它给了我所有这些ng-ifs的错误:
angular.js:13920错误:[$ parse:syntax]语法错误:令牌'{'是 意外,期待[]]在表达式的第53列 [VM.PageFeatures.AvailableFields.SafeAny(function(e){return e.Id == VM.Constants.SingleDate; })]从[{return e.Id ==开始] VM.Constants.SingleDate; })]。
我已经尝试使用{}和{{}}来支持这些条件,但它总是给我一个与之前不同的错误。
我该如何解决这个问题?
注1:每个变量和函数都存在且有效。
注意2:我不希望控制器上的每个div都有一个变量。
答案 0 :(得分:1)
也许重构会有所帮助:
HTML
<div id="LineSingleDate" ng-if="VM.checkAvailability('SingleDate')"></div>
<div id="LineSpotlight" ng-if="VM.checkAvailability('InSpotlight')"></div>
控制器
VM.checkAvailability(fieldName) {
return VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants[fieldName]; })
}