我正在尝试在服务中调用工厂功能。
我的工厂看起来像这样:
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
函数中获得了价值,但没有在工厂函数中调用。
请说明我的错误在哪里?
答案 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
参数