我正在尝试从我的控制器中调用服务
leadService.loadPage.query({pageNumber: pageNumber}, success, error);
服务定义
define([], function() {
return ['$resource', function ($resource) {
return {
loadPage: loadPage
};
function loadPage() {
return $resource('http://localhost/api/loadPage/:pageNumber', null, {
query: {
method: 'GET',
params: {
pageNumber: '1'
},
isArray: true
}
});
}
}]
})
显示错误TypeError: undefined is not a function
。它可能无法触发query
语句。
我正在使用RequireJS和AngularJS。
答案 0 :(得分:1)
这里有两个问题。第一个被@MannyD发现。您必须像这样修复函数定义(即在引用它的return语句之前声明函数):
define([], function() {
return ['$resource', function ($resource) {
function loadPage() {
return $resource('http://localhost/api/loadPage/:pageNumber', null, {
query: {
method: 'GET',
params: {
pageNumber: '1'
},
isArray: true
}
});
}
return {
loadPage: loadPage
};
}]
})
第二个问题是我发现的问题:像leadService.loadPage.query({pageNumber: pageNumber}, success, error);
这样的调用会触发错误,因为loadPage
是一个函数,而不是$reource
。您必须 添加定义中的parens 或在呼叫中添加父级。这意味着:
define([], function() {
return ['$resource', function ($resource) {
function loadPage() {
return $resource('http://localhost/api/loadPage/:pageNumber', null, {
query: {
method: 'GET',
params: {
pageNumber: '1'
},
isArray: true
}
});
}
return {
loadPage: loadPage()
};
}]
});
//...
leadService.loadPage.query({pageNumber: pageNumber}, success, error);
或强>
define([], function() {
return ['$resource', function ($resource) {
function loadPage() {
return $resource('http://localhost/api/loadPage/:pageNumber', null, {
query: {
method: 'GET',
params: {
pageNumber: '1'
},
isArray: true
}
});
}
return {
loadPage: loadPage
};
}]
});
//...
leadService.loadPage().query({pageNumber: pageNumber}, success, error);