我想分割一个大的控制器。走的路将通过工厂,但由于我正在改变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;
},
};
}]);
演示http://jsfiddle.net/T8rgv/7/
什么我希望是定义工厂 “变种X” 作为CNTRL2的功能,然后在我从Cntrl1调用它的时候通过工厂执行这个函数。
那么,如何使这项工作?这种方法是否正确?或者我应该只是从工厂更改DOM?
干杯, 杰拉德
我认为你错误的工厂“share_scope”。工厂不是范围。但是你是正确的,与控制器通信的一种好方法是通过工厂。 – koolunix