对 angularjs 中的所有函数使用 1 种方法,缩减为一个函数
Use 1 method for all the function short down to one function in angularjs
您好,我正在尝试创建一个 angular 应用程序。所以这是我在我的大多数控制器中经常使用的一个功能。我可以制作一个函数或一种方法吗,这样我就可以像在 PHP.
中那样在任何地方使用这个函数吗?
这是我的功能:
var responsePromise = $http.get("http://www.somewebsite.com/api/get_category_index/");
responsePromise.success(function(data, status, headers, config) {
//console.log(data);
$scope.PostCategories = data.categories;
$scope.spinner = false;
});
responsePromise.error(function(data, status, headers, config) {
alert("ajax didnt work");
});
我有多个控制器,例如我在此处连接了 2 个控制器:
var module = angular.module('app', ['onsen', 'ngSanitize']);
module.controller('directoryControl', function($scope, $http, $rootScope) {
ons.ready(function() {
$scope.spinner = true;
var responsePromise = $http.get("http://www.somewebsite.com/api/get_category_index/");
responsePromise.success(function(data, status, headers, config) {
//console.log(data.categories);
$scope.PostCategories = data.categories;
$scope.spinner = false;
});
responsePromise.error(function(data, status, headers, config) {
alert("ajax didnt work");
});
$scope.setCurrentCategory = function(categoryName){
$scope.CurrentCategory = categoryName;
$rootScope.CurrentCategory=$scope.CurrentCategory;
}
});
});
module.controller('directoryCategoryListing', function($scope, $http, $rootScope) {
ons.ready(function() {
$scope.CurrentCategory = $rootScope.CurrentCategory;
$scope.spinner = true;
var CategoryWiseListingPromise = $http.get("http://www.somewebsite.com/api/get_category_posts/?slug="+$rootScope.CurrentCategory+"&count=50");
CategoryWiseListingPromise.success(function(data, status, headers, config) {
//console.log(data.posts);
$scope.PostDetails = data.posts;
$scope.spinner = false;
});
CategoryWiseListingPromise.error(function(data, status, headers, config) {
alert("ajax didnt work");
});
$scope.setCurrentListing = function(listingName){
$scope.CurrentListing = listingName;
$rootScope.CurrentListing=$scope.CurrentListing;
}
});
});
所以我只想把它作为一个通用函数,我可以从控制器调用它。
同样,我对 URL 也有疑问。我想定义一个 URL 变量,我可以从所有控制器的任何地方访问它。喜欢:
var WebsiteURL = "http://www.somewebsite.com/api/"
任何人都知道我可以做到这一点!
您可以通过创建工厂并将此方法放入其中,并通过注入工厂依赖项来访问此方法来实现此目的
app.factory('DataService', fucntion($http){
var baseUrl = "http://www.somewebsite.com/api";
var getData = function(extendedUrl, successCallback, errorCallback){
return $http.get(baseUrl + extendedUrl).success(successCallback).error(errorCallback);
}
return {
getData: getData
}
});
控制器
module.controller('directoryCategoryListing', function($scope, $http, $rootScope, DataService) {
ons.ready(function() {
$scope.CurrentCategory = $rootScope.CurrentCategory;
var successCallback = function(data, status, headers, config) {
//console.log(data.posts);
$scope.PostDetails = data.posts;
$scope.spinner = false;
};
var errorCallback = function(data, status, headers, config) {
alert("ajax didnt work");
}
DataService.getData("/get_category_posts/?slug=" + $rootScope.CurrentCategory + "&count=50", successCallback, errorCallback);
$scope.setCurrentListing = function(listingName) {
$scope.CurrentListing = listingName;
$rootScope.CurrentListing = $scope.CurrentListing;
}
});
});
在控制器中,您可以通过注入 service/factory 名称进行访问,然后访问其中可用的方法。
重构代码的方法如下:
var module = angular.module('app', ['onsen', 'ngSanitize']);
module.service('DirectoryService',function(){
var self = this;
self.GetCategoryIndex = function(scope){
$http.get("http://www.somewebsite.com/api/get_category_index/").success(function(data, status, headers, config) {
//console.log(data.categories);
scope.PostCategories = data.categories;
scope.spinner = false;
}).error(function(data, status, headers, config) {
alert("ajax didnt work");
});
}
});
module.controller('directoryControl', function($scope, $http, $rootScope,DirectoryService) {
ons.ready(function() {
$scope.spinner = true;
DirectoryService.GetCategoryIndex($scope);
$scope.setCurrentCategory = function(categoryName){
$scope.CurrentCategory = categoryName;
$rootScope.CurrentCategory=$scope.CurrentCategory;
}
});
});
您好,我正在尝试创建一个 angular 应用程序。所以这是我在我的大多数控制器中经常使用的一个功能。我可以制作一个函数或一种方法吗,这样我就可以像在 PHP.
中那样在任何地方使用这个函数吗?这是我的功能:
var responsePromise = $http.get("http://www.somewebsite.com/api/get_category_index/");
responsePromise.success(function(data, status, headers, config) {
//console.log(data);
$scope.PostCategories = data.categories;
$scope.spinner = false;
});
responsePromise.error(function(data, status, headers, config) {
alert("ajax didnt work");
});
我有多个控制器,例如我在此处连接了 2 个控制器:
var module = angular.module('app', ['onsen', 'ngSanitize']);
module.controller('directoryControl', function($scope, $http, $rootScope) {
ons.ready(function() {
$scope.spinner = true;
var responsePromise = $http.get("http://www.somewebsite.com/api/get_category_index/");
responsePromise.success(function(data, status, headers, config) {
//console.log(data.categories);
$scope.PostCategories = data.categories;
$scope.spinner = false;
});
responsePromise.error(function(data, status, headers, config) {
alert("ajax didnt work");
});
$scope.setCurrentCategory = function(categoryName){
$scope.CurrentCategory = categoryName;
$rootScope.CurrentCategory=$scope.CurrentCategory;
}
});
});
module.controller('directoryCategoryListing', function($scope, $http, $rootScope) {
ons.ready(function() {
$scope.CurrentCategory = $rootScope.CurrentCategory;
$scope.spinner = true;
var CategoryWiseListingPromise = $http.get("http://www.somewebsite.com/api/get_category_posts/?slug="+$rootScope.CurrentCategory+"&count=50");
CategoryWiseListingPromise.success(function(data, status, headers, config) {
//console.log(data.posts);
$scope.PostDetails = data.posts;
$scope.spinner = false;
});
CategoryWiseListingPromise.error(function(data, status, headers, config) {
alert("ajax didnt work");
});
$scope.setCurrentListing = function(listingName){
$scope.CurrentListing = listingName;
$rootScope.CurrentListing=$scope.CurrentListing;
}
});
});
所以我只想把它作为一个通用函数,我可以从控制器调用它。
同样,我对 URL 也有疑问。我想定义一个 URL 变量,我可以从所有控制器的任何地方访问它。喜欢:
var WebsiteURL = "http://www.somewebsite.com/api/"
任何人都知道我可以做到这一点!
您可以通过创建工厂并将此方法放入其中,并通过注入工厂依赖项来访问此方法来实现此目的
app.factory('DataService', fucntion($http){
var baseUrl = "http://www.somewebsite.com/api";
var getData = function(extendedUrl, successCallback, errorCallback){
return $http.get(baseUrl + extendedUrl).success(successCallback).error(errorCallback);
}
return {
getData: getData
}
});
控制器
module.controller('directoryCategoryListing', function($scope, $http, $rootScope, DataService) {
ons.ready(function() {
$scope.CurrentCategory = $rootScope.CurrentCategory;
var successCallback = function(data, status, headers, config) {
//console.log(data.posts);
$scope.PostDetails = data.posts;
$scope.spinner = false;
};
var errorCallback = function(data, status, headers, config) {
alert("ajax didnt work");
}
DataService.getData("/get_category_posts/?slug=" + $rootScope.CurrentCategory + "&count=50", successCallback, errorCallback);
$scope.setCurrentListing = function(listingName) {
$scope.CurrentListing = listingName;
$rootScope.CurrentListing = $scope.CurrentListing;
}
});
});
在控制器中,您可以通过注入 service/factory 名称进行访问,然后访问其中可用的方法。
重构代码的方法如下:
var module = angular.module('app', ['onsen', 'ngSanitize']);
module.service('DirectoryService',function(){
var self = this;
self.GetCategoryIndex = function(scope){
$http.get("http://www.somewebsite.com/api/get_category_index/").success(function(data, status, headers, config) {
//console.log(data.categories);
scope.PostCategories = data.categories;
scope.spinner = false;
}).error(function(data, status, headers, config) {
alert("ajax didnt work");
});
}
});
module.controller('directoryControl', function($scope, $http, $rootScope,DirectoryService) {
ons.ready(function() {
$scope.spinner = true;
DirectoryService.GetCategoryIndex($scope);
$scope.setCurrentCategory = function(categoryName){
$scope.CurrentCategory = categoryName;
$rootScope.CurrentCategory=$scope.CurrentCategory;
}
});
});