내 페이지의 일부가 컨트롤러에 의해 처리됩니다. 전역 속성 $ scope.selected에 따라 다릅니다. 컨트롤러 시작시 및 $ scope.selected 값이 변경 될 때마다 컨트롤러를 초기화해야합니다.
.controller ('Details', ['$scope', function ($scope) {
function init() {
$scope.viewProperty = complexOperation($scope.selected);
}
$scope.$watch ('selected', init);
init();
}])
<span ng-if="selected.gto" ng-controller="Details">
{{viewProperty}}
</span>
컨트롤러 초기화시 init을 호출하고 $ scope.selected를 변경합니다. 이것은 나에게 좋지 않습니다. 더 나은 해결책이 있습니까?
컨트롤러 초기화시 'init()'이 시계에서 호출됩니다. 'init()'안에'console.log'를 써서 이것을 확인할 수 있습니다. 따라서 컨트롤러의 마지막'init()'문은 중복됩니다. –
아니요, 사실이 아닙니다, init()에 대한 호출을 생략하면 카르마 테스트가 실패합니다. – user3725805
어쩌면 테스트를 확인해야합니다 ... $ apply 또는 $ digest를 호출했는지 확인하십시오. –