3 回答

TA貢獻1775條經驗 獲得超8個贊
在 app.js 文件中為每個控制器定義全局 javascript 變量,類似于給定的。
var PayRateScope, ManageResourceScope, sequenceScopePA;
現在在您的控制器中,在 app.controller 方法定義的末尾,將 $scope 分配給相應的全局范圍變量。例如。
// Payrare Controller
app.controller('PayRateAdminController', function ($scope, $compile, $http, $timeout) {
// your code and functions
PayRateScope = $scope;
});
//ManageResource Contoller
app.controller('ManageResourceController', function ($scope, $compile, $http, $timeout) {
// your code and functions
ManageResourceScope = $scope;
});
現在,您將能夠在任何外部 js 中使用它的全局變量訪問相應控制器內的函數,例如,
PayRateScope.FunctionName();

TA貢獻1852條經驗 獲得超7個贊
您可以使用服務:
app.service('someService', function () {
this.loadPage = function (data, message, removeFilter, byColumn, orderDir) {
//...
};
});
并將其注入控制器:
控制器 1:
app.controller('FilterController',["$scope","someService" */andOther/*, function ($scope, someService) {
$scope.sortByColumn = function () {
var data = { 'editorID': $scope.editorID(), 'filter':
dataService.data.objFilterColumns };
dataService.getData('UpdateFilter', data).then(function (response) {
$uibModalInstance.dismiss('cancel');
someService.loadPage(...parameters);
});
控制器2:
app.controller("myCtrl", ['$scope','someService' ,function($scope, someService){
$scope.loadPage = someService.loadPage(data, message, removeFilter, byColumn,
orderDir);
}]);
來自 AngularJS 文檔:
AngularJS 服務是使用依賴注入 (DI) 連接在一起的可替換對象。您可以使用服務在您的應用程序中組織和共享代碼。
AngularJS 服務是:
延遲實例化——AngularJS 僅在應用程序組件依賴它時實例化服務。單例 - 依賴于服務的每個組件都獲得對服務工廠生成的單個實例的引用。

TA貢獻1865條經驗 獲得超7個贊
首先,您需要了解 $broadcast()、$emit() 和 $on() 之間的區別
$broadcast()
- 從父控制器向子控制器發送一個均勻的向下。
$emit()
- 從當前控制器向上發送一個事件到它的所有父控制器
$on
- $broadcast() 和 $emit() 引發的事件可以通過使用 $on() 連接事件處理程序來處理
$scope.$parent
- 意味著您訪問父控制器范圍。這將幫助您訪問父控制器中的變量和方法。
看起來像這樣。
希望這會讓您清楚這些條款。
添加回答
舉報