splincodewd
@splincodewd
Developer

Как определить, из-за чего дважды вызывается функция в контроллере?

У меня есть контроллер:
<div ng-controller="Main">
<widget autoupdate="true" exec="myconsole"/>
<widget />
<widget />
<widget />
<widget />
<widge/>

</div>


function Main($scope){
$scope.myconsole = function(val) {
console.log(val);
}


}


Создаем компонент - виджет
const widgetsComponent = {

   bindings: {
	
	   'autoupdate': '@',
	   'exec': '=', 
    },

    template: require('./view/blocks/widgets.html'),
};


Код виджета
<div>
 {{ $ctrl.autoupdate ? $ctrl.exec(1) : 0  }}

..
</div>


В итоге:
a26d9f43a02140ad993a38aef1d17f82.png

Я к тому, что если прописать для компонентов 2 раза exec, тогда он выполнится еще больше, почему?
<div ng-controller="Main">
<widget autoupdate="true" exec="myconsole"/>
<widget />
<widget />
<widget />
<widget autoupdate="true" exec="myconsole"/>

</div>


9b1b3d5cae5e436a841e4b245d74a4e9.png
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
AMar4enko
@AMar4enko
Потому что {{ $ctrl.autoupdate ? $ctrl.exec(1) : 0 }} будет выполняться на каждый чих $digest-цикла.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@springimport
<widget autoupdate="true" exec="myconsole"/>
...
<widget autoupdate="true" exec="myconsole"/>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы