给定以下 angularjs 服务:
angular.module('myApp.services', [])
.factory('EmployeesService', ['$http', function ($http) {
return {
name: 'Employees Service',
getByTerm: function (term, callback) {
$http.get('Services/GetEmployess?term='+term).success(function (data) {
callback(data);
});
}
};
} ]);
如何将 $http.get URL 设置为动态而不是硬编码?
最佳答案
不确定您希望网址的哪一部分是动态的,因此如果您希望“term=” + term 部分是动态的:
angular.module('myApp.services', [])
.factory('EmployeesService', ['$http', function ($http) {
return {
name: 'Employees Service',
getByTerm: function (params, callback) {
var terms = [];
//params example: {param1: "lorem", param2:"ipsum"}
for(var key in params){
if(params.hasOwnProperty(key)){
terms.push(key + "=" + params[key]);
}
}
//terms now looks like this: ["param1=lorem", "param2=ipsum"]
var url = 'Services/GetEmployess?' + terms.join("&");
//url will look lik this: 'Services/GetEmployess?param1=lorem¶m1=ipsum';
$http.get(url).success(function (data) {
callback(data);
});
}
};
} ]);
如果您希望发布的实际网址是动态的,请将其作为另一个参数传递:
angular.module('myApp.services', [])
.factory('EmployeesService', ['$http', function ($http) {
return {
name: 'Employees Service',
getByTerm: function (url, term, callback) {
$http.get(url+term).success(function (data) {
callback(data);
});
}
};
} ]);
如果这些都不是您想要的...您能详细说明您希望网址的哪一部分是动态的吗?
关于javascript - 服务的 Angular 动态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14023752/