Javascript 在angularjs中调用服务中的工厂函数
我正在尝试调用服务中的工厂函数 我的工厂是这样的:Javascript 在angularjs中调用服务中的工厂函数,javascript,angularjs,Javascript,Angularjs,我正在尝试调用服务中的工厂函数 我的工厂是这样的: function LMSAppFactory($http) { var ajaxRequest = 'processRequest.jsp?'; return { getTableData: getTableData, }; function getTableData(params, callback) { alert(1);
function LMSAppFactory($http) {
var ajaxRequest = 'processRequest.jsp?';
return {
getTableData: getTableData,
};
function getTableData(params, callback) {
alert(1);
$http.get(ajaxRequest + 'requestType=getRecords'+params+'&value=10').then(function (response) {
callback(response.data[1].LMSRecords, response.data[0].LMSRecordsCount);
});
}
}
$scope.branchSearch = function (code){
$scope.data = LMSAppFactory.getTableData(params, code); // <= i assume -code- is your calllback
}
我的服务
$scope.branchSearch = function (code){
alert(code);
getData: LMSAppFactory.getTableData;
}
我在branchSearch
函数中获得值,但在工厂函数中没有调用
请指出我的错误在哪里 代码不完整,但我不明白您在下面的代码中试图做什么(调用?赋值?您是否试图定义一个,但为什么?)
您的工厂声明似乎是正确的,但是它的调用有问题代码>,您没有呼叫工厂 此外,如果尚未将
LMSAppFactory
factory注入到服务中,则需要将其注入服务中。比如:
angular.module('yourmodule')
.service('yourBranchService', ['LMSAppFactory', function(LMSAppFactory) {
//service code
}
]);
然后,最后在服务中调用factory方法:
$scope.branchSearch = function (code){
alert(code);
var inputParams = {}; // fill params
LMSAppFactory.getTableData(inputParams, callback)
}
function callback(lmsRecords, lmsCount){
// call back implementaion
}
这是因为您没有调用工厂函数,而只是将它的引用指定给控制器 如果希望使用
$scope.branchSearch
方法从工厂获取数据,则应如下所示:
function LMSAppFactory($http) {
var ajaxRequest = 'processRequest.jsp?';
return {
getTableData: getTableData,
};
function getTableData(params, callback) {
alert(1);
$http.get(ajaxRequest + 'requestType=getRecords'+params+'&value=10').then(function (response) {
callback(response.data[1].LMSRecords, response.data[0].LMSRecordsCount);
});
}
}
$scope.branchSearch = function (code){
$scope.data = LMSAppFactory.getTableData(params, code); // <= i assume -code- is your calllback
}
$scope.branchSearch=函数(代码){
$scope.data=LMSAppFactory.getTableData(params,code);//这是什么语法getData:LMSAppFactory.getTableData
?它不会调用工厂函数。相反,应该像LMSAppFactory.getTableData(code)那样直接调用它
。仅供参考,但为什么您仍然遵循回调工作方式?基于承诺的工作流非常优越(快速的谷歌搜索将为您提供这方面的信息)。只需返回$http。get
调用即可从您的服务中返回承诺。无论哪种方式,您都不会处理网络请求可能引发的任何错误。