簡體   English   中英

myfunction()函數在angularjs中從一個控制器調用到另一個

[英]myfunction() function call from one controller to another in angularjs

我已經使用過Angularjs,我想從一個控制器調用getcustomer函數到另一個控制器,我有很多事情在做,但我不知道如何調用,我在下面使用的代碼中寫了

      var app = angular.module('Napp', []);
            app.controller('GetAlphabetical', function ($scope, $http) {

      function getCutomers() {
                $scope.loading = true;
                $http.get('@Url.Content("~/Home/GetPesrons")').then(function (response) {
                    //var _data = angular.fromJson(response);
                    $scope.loading = false;
                    $scope.Customer = response.data; // please check the request response if list id in data object 
                }, function (error) {
                    throw error;
                })
            }
    });



and second controller :

app.controller('MainCtrl', function ($scope, $http) {
getCutomers()
});

配合,您必須按照以下步驟解決問題。 首先,您要創建一個工廠

   angular
    .module('Napp')
    .factory('CustomerFactory', ['$http', function ($http) {
      var _factory = {};

      _factory.getCustomers = function () {
        return $http.get('@Url.Content("~/Home/GetPesrons")');
      };

      return _factory;
    }]);

然后,您可以在多個控制器或服務之間共享數據和功能

GetAlphabetical控制器:

   angular
    .module('Napp')
    .controller('GetAlphabetical', ['$scope', 'CustomerFactory', function ($scope, CustomerFactory) {

      loadCustomers();

      function loadCustomers() {
        CustomerFactory.getCustomers().then(function (successResponse) {
          $scope.Customer = successResponse.data; // please check the request response if list id in data object 
        }, function (errorResponse) {
          throw error;
        })
      }

    }]);

MainCtrl控制器:

  angular
    .module('Napp')
    .controller('MainCtrl', ['$scope', 'CustomerFactory', function ($scope, CustomerFactory) {

      loadCustomers();

      function loadCustomers() {
        CustomerFactory.getCustomers().then(function (successResponse) {
          $scope.Customer = successResponse.data; // please check the request response if list id in data object 
        }, function (errorResponse) {
          throw error;
        })
      }

    }]);

您要做的是以某種方式在兩個控制器之間進行通信。 使用$ broadcast$ on可以輕松實現。

如果您的控制器之間存在父子關系,請使用以下內容。

function firstCtrl($scope){
    $scope.$broadcast('someEvent', [1,2,3]);
}

function secondCtrl($scope){
    $scope.$on('someEvent', function(event, mass) {console.log(mass)});
}

如果您的控制器之間沒有父子關系,則注入$ rootScope並使用它廣播。

相關問題-https://stackoverflow.com/a/14502755/1182982

通過將其定義為service並將其注入為依賴項,可以輕松完成此操作。

var app = angular.module('myApp', []);

myApp.service('helloWorldFromService', function() {
    this.sayHello = function() {
        return "Hello, World!"
    };
});

app.controller('MainCtrl', function ($scope, $http, helloWorldFromService) {

app.controller('GetAlphabetical', function ($scope, $http, helloWorldFromService) {

角度服務

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM