Как остановить бесконечный вызов функции AngularJS из блока ng-if? - PullRequest
0 голосов
/ 27 декабря 2018

Функция JS вызывается бесконечно много раз из HTML ng-if и вызывает ошибки.

В моем HTML есть строка

<div ng-if="isCanvasAndFeatureFlagOrStoreTagSet(variant)">, которая вызывает угловую функцию ниже:

$scope.isCanvasAndFeatureFlagOrStoreTagSet = (variant) => {
            if (variant.productCategory.productGroup === 'CANVAS_PRINTS') {
                const featureFlagName = 'MULTICOLOR_CANVAS';
                var featureFlagSet = false;
                return resourceExec({
                    resource: Features.getFeature({featureName: featureFlagName}),
                    success: (response) => {
                        if (response && response.name === featureFlagName && response.enabled) {
                            featureFlagSet = true;
                        }
                    },
                    failure: (fail) => {
                        featureFlagSet = false;
                    }
                });
                let storeTagSet = $scope.store.tags.indexOf("multicolorcanvas") != -1;
                return storeTagSet || featureFlagSet;
            } else {
                return false;
            }
        };

, который следует проверять только один раз во время инициализации, а затем один раз в любое время, когда на странице происходит изменение.Тем не менее, в моем случае, когда на страницу вносится начальное изменение (продукт добавлен), вышеупомянутая функция вызывается бесконечное количество раз, вызывая ошибку ниже бесконечного:

Uncaught Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: 
[[{"msg":"isCanvasAndFeatureFlagOrStoreTagSet(variant)","newVal":{},"oldVal":{}}, 
{"msg":"isCanvasAndFeatureFlagOrStoreTagSet(variant)","newVal":{},"oldVal":{}}], 
[{"msg":"isCanvasAndFeatureFlagOrStoreTagSet(variant)","newVal":{},"oldVal":"..."}, 
{"msg":"isCanvasAndFeatureFlagOrStoreTagSet(variant)","newVal":{},"oldVal":"..."}],[{"msg":"isCanvasAndFeatureFlagOrStoreTagSet(variant)","newVal":{},"oldVal":"..."},{"msg":"isCanvasAndFeatureFlagOrStoreTagSet(variant)","newVal":{},"oldVal":"..."}],[{"msg":"isCanvasAndFeatureFlagOrStoreTagSet(variant)","newVal":{},"oldVal":"..."},{"msg":"isCanvasAndFeatureFlagOrStoreTagSet(variant)","newVal":{},"oldVal":"..."}],[{"msg":"isCanvasAndFeatureFlagOrStoreTagSet(variant)","newVal":{},"oldVal":"..."},{"msg":"isCanvasAndFeatureFlagOrStoreTagSet(variant)","newVal":{},"oldVal":"..."}]]

Как сохранитьэта функция вызывается бесконечное время, как это?

...