在angularjs

时间:2017-05-19 08:31:58

标签: javascript angularjs

我正在尝试在服务中调用工厂功能。

我的工厂看起来像这样:

 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){
    alert(code);
    getData: LMSAppFactory.getTableData;
}

我在branchSearch函数中获得了价值,但没有在工厂函数中调用。

请说明我的错误在哪里?

3 个答案:

答案 0 :(得分:0)

代码不完整但我没有得到你在下面的代码中尝试做的事情(调用?赋值?你试图定义label statement但是为什么?)

$scope.branchSearch = function (code){
   alert(code);
   getData: LMSAppFactory.getTableData; // <-- HERE
}

如果要调用getTableData,则有效的调用可能是

$scope.branchSearch = function (code){
        alert(code);
        var params = {} //pass the parameters here
        LMSAppFactory.getTableData(params, function(val1, val2){
          //callback behaviour here
        })
}

答案 1 :(得分:0)

您的工厂声明似乎是正确的,但是它的调用存在问题。在这里getData: LMSAppFactory.getTableData;,您没有致电工厂。

此外,如果尚未在服务中注入LMSAppFactory工厂,则需要。喜欢:

angular.module('yourmodule')
    .service('yourBranchService', ['LMSAppFactory', function(LMSAppFactory) {
           //service code
      }
]);

然后,最后在服务中,调用工厂方法:

$scope.branchSearch = function (code){
        alert(code);
        var inputParams = {}; // fill params
        LMSAppFactory.getTableData(inputParams, callback)
 }

function callback(lmsRecords, lmsCount){
    // call back implementaion
}

答案 2 :(得分:0)

那是因为你没有调用你的工厂功能只是为了指定它对控制器的引用。

如果您希望$scope.branchSearch方法从工厂获取数据,您应该这样:

$scope.branchSearch = function (code){
    $scope.data = LMSAppFactory.getTableData(params, code); // <= i assume -code- is your calllback
}

这样你调用函数并从调用者函数发送你fgot的code参数