Вызов функции myfunction () из одного контроллера в другой в angularjs

0

Я использовал Angularjs, и я хочу вызвать функцию getcustomer от одного контроллера к другому контроллеру. У меня так много работы с gooogling, но у меня нет идеи, что, как называть это, я пишу ниже кода, который я использовал

      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()
});
  • 0
    Вообще это называется плохой практикой. Вы должны начать думать, чтобы использовать или service или factory . Вы найдете много статей о том, как это работает stackoverflow.com/questions/22511986/…
  • 0
    Да, я знаю, возможно, вы правы, но я новичок в angularjs
Показать ещё 2 комментария
Теги:
asp.net-mvc

3 ответа

1

Mate, вам нужно будет выполнить следующие шаги, чтобы решить вашу проблему. Во-первых, вы создали фабрику

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

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

      return _factory;
    }]);

Затем вы можете обмениваться данными и функциями между несколькими контроллерами или службами

GetAlphabetical Controller:

   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;
        })
      }

    }]);
  • 0
    Вы можете загрузить данные в один контроллер и использовать одни и те же данные в другом контроллере. если это ваша задача, то вы можете сохранить свои данные на заводе и получить доступ к различным контроллерам.
  • 0
    Да, вы говорите абсолютно правильно, я попробую вам идею
Показать ещё 1 комментарий
0

То, что вы хотите сделать, - это как-то связаться между двумя контроллерами. Этого можно легко достичь, используя $ broadcast & $ on.

Если между вашими контроллерами установлена родительская дочерняя связь, используйте следующее.

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

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

Если между вашим контроллером нет родительской дочерней связи, затем введите $ rootScope и передайте с помощью этого.

связанный вопрос - qaru.site/questions/11659/...

0

Это можно легко сделать, определив его как 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) {

Angular Service

Ещё вопросы

Сообщество Overcoder
Наверх
Меню