我的问题是我有2个控制器...我想知道是否可以调用它们中的任何功能以便一起工作... 例如:
firstController.js
angular.module('myApp').controller('FirstController', ['$scope', 'FirstService', function($scope, FirstService) {
function verify(){
//Some operations
}
}]);
secondController.js
angular.module('myApp').controller('SecondController', ['$scope', 'SecondService', function($scope, SecondService) {
function edit(iditem){
//Some operations
//I wanna call here verify() function
}
}]);
这可能吗?
提前致谢!
答案 0 :(得分:2)
您只能使用一个服务并从两个控制器调用服务。这是一个基本的例子,你可以添加一个构造函数并传递它$ scope,例如它取决于你想要完成的任务。
'use strict';
/**
* Service
*/
angular.module('myApp.someService', [])
.factory("someService", function () {
return {
verify: function() {},
edit: function(iditem){
self.verify();
}
});
然后你的控制器看起来像这样:
angular.module('myApp').controller('FirstController', ['$scope', 'someService', function($scope, someService) {
service.verify($scope);
}]);
angular.module('myApp').controller('SecondController', ['$scope', 'someService', function($scope, someService) {
service.edit(iditem);
}]);
答案 1 :(得分:0)
您可以通过$rootScope
控制器
在FirstContoller中包含$ rootScope,分配一个函数:
$rootScope.myFirstController_verify = verify;
从包含$rootScope
的第二个控制器调用它:
$rootScope.myFirstController_verify();
答案 2 :(得分:0)
如果控制器是嵌套的:
<div ng-controller="FirstController">
<div ng-controller="SecondController">
</div>
</div>
如果FirstController在$scope
上发布其函数,嵌套控制器可以通过原型继承来调用函数。
在$ scope上发布功能:
app.controller('FirstController', function($scope) {
$scope.firstVerify = verify;
function verify(){
//Some operations
}
});
通过$ scope继承调用:
app.controller('SecondController', function($scope) {
function edit(iditem){
//Some operations
//I wanna call here verify() function
$scope.firstVerify();
}
});
这仅在第二个控制器的范围是第一个控制器范围的子范围时才有效。
正如您所看到的,这个问题有很多答案。使用哪个答案取决于具体的用例。