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
调用即可从您的服务中返回承诺。无论哪种方式,您都不会处理网络请求可能引发的任何错误。