2016-11-22 9 views
0

は、複数の要素を非表示にした場合、NG-上の条件を確認してください。AngularJS - 彼らはこのように状態をチェックすると、私は/表示する必要が

<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 Error: [$parse:syntax] Syntax Error: Token '{' is unexpected, expecting [)] at column 53 of the expression [VM.PageFeatures.AvailableFields.SafeAny(function(e) { return e.Id == VM.Constants.SingleDate; })] starting at [{ return e.Id == VM.Constants.SingleDate; })].

私は既に{}}と{{}}の条件を使用しようとしましたが、以前のように私には別のエラーが表示されます。

どうすればこの問題を解決できますか?

注1:すべての変数と関数が存在し、機能します。

注2:コントローラの各divに変数を設定する必要はありません。

+7

を。 –

+1

が合意しました。これは読み込み不可能であるだけでなく、保守不能でエラーの一部である可能性があります。 –

+0

私はこれがreadbleでないことを知らなかったし、他のケースではうまくいく。どうもありがとう – Ninita

答えて

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]; }) 
} 
関連する問題