큰 컨트롤러를 분할하려고합니다. 가는 방법은 공장을 통하는 것이지만, DOM을 바꾸고 있기 때문에 컨트롤러를 통해해야합니다.Angularjs 다른 컨트롤러에서 컨트롤러의 기능을 호출하는 방법
그런 다음 Cntrl1에서 Cntrl2에 정의 된 함수를 호출하려고합니다. 예
HTML
<body ng-app="app">
<div ng-controller='Cntrl1'>
{{message}}
</div>
</body>
JS
var myModule = angular.module('app', []);
angular.module('app').controller('Cntrl1',
['$scope', '$q', '$timeout', 'Share_scope',
function ($scope, $q, $timeout, Share_scope) {
Share_scope.process();
$scope.message = 'started';
}]);
angular.module('app').controller('Cntrl2',
['$scope', '$q', '$timeout', 'Share_scope',
function ($scope, $q, $timeout, Share_scope) {
Share_scope.x = function() {
alert('done');
}
}]);
angular.module('app').factory('Share_scope',
['$window', '$q',
function($window, $q) {
var x;
return {
process: function() {
return x;
},
};
}]);
는 내가 기대하는 것은 Cntrl2의 기능으로 공장의 "var에 x"를 정의하는 것입니다 데모, 다음 Cntrl1에서 호출 할 때 공장 통해이 함수를 실행하십시오.
그럼 어떻게 만드나요? 이 접근법이 맞습니까? 아니면 그냥 공장에서 DOM을 변경해야합니까?
건배, 제라드
"share_scope"라는 공장의 이름을 잘못 지정했다고 생각합니다. 공장이 범위가 아닙니다. 그러나 컨트롤러를 사용하는 좋은 방법은 공장을 통하는 것입니다. – koolunix