Я использовал 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()
});
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;
})
}
}]);
То, что вы хотите сделать, - это как-то связаться между двумя контроллерами. Этого можно легко достичь, используя $ 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/...
Это можно легко сделать, определив его как 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) {
service
илиfactory
. Вы найдете много статей о том, как это работает stackoverflow.com/questions/22511986/…