0

補間エラーが発生しますが、たまにしかありません。エラーなしでページを数百回更新/ロードするか、最初のロード時に表示され、キャッシュをリロード/空にした後に再び表示されることがあります。エラーの原因と、ランダムに表示される理由がわかりません。

エラー: [$interpolate:interr] 補間できません: {{ showresult(all, two, figs, dates) }} TypeError: 日付が定義されていません

行 10023 を指しています。

line 10017: if (hasApply) {
line 10018:    return function() {
line 10019:      var args = [];
line 10020:      forEach(arguments, function(arg) {
line 10021:       args.push(formatError(arg));
line 10022:           });
line 10023:          return logFn.apply(console, args);
line 10024:   };
line 10025: }

JavaScript:

$scope.showresult = function(all, two, figs, dates) {
    if(typeof(all) != undefined && typeof(two) != undefined && typeof(figs) != undefined && typeof(dates) != undefined){
         var lengthendtwo = 'start_' + two.name;
         var lengthenthree =  dates.text + '_' + figs.name;
         var datesproxy = Object.keys($scope.results[all.id][lengthendtwo])[dates.id];
         var result = angular.fromJson($scope.results[all.id][lengthendtwo][datesproxy][figs.name][lengthenthree]);
         return result;
     }
}

HTML:

<div ng-repeat="all in allz">
 ...
 <div ng-repeat="two in twoz">
  ...
   <div ng-repeat="figs in figsz">
    ...
     <div ng-repeat="dates in datesz">

       {{ showresult(all, two, figs, dates) }}

     </div>

   </div>

 </div>

</div>

編集:コンソールでエラーなしで置き換えtypeof(all) !== undefinedangular.isDefined(all)も、結果がまったく表示されないか、「未定義」として表示される場合、一部は正しく返されます。関数が呼び出されたときに変数が定義されていないため、タイミングの問題である可能性があると思います。

回避策: ビューから関数を呼び出す代わりに、ng-repeat と同じネスト構造を持つスコープ変数 (配列) を作成します。

{{ showresult(all, two, figs, dates) }}

に置き換えられます

{{ showresult[$parent.$parent.$parent.$index][$parent.$parent.$index][$parent.$index][$index] }}

エラーなしで動作しますが、元のコードの何が問題だったのか知りたいです。

4

0 に答える 0