我正在尝试搜索只有在参数包含6个或更多字符时才会调用并返回ajax调用的表单。
在我的控制器中,我有一个简单的功能。
function getByParam(param) {
if (param.length >= 6) {
return $http.get('https://example.com/endpoint/' + param);
} else {
return noItems();
}
}
问题在于返回带有空响应集的promise。无论我试图尝试什么都会导致错误。
myController.getByParam(param).success is not a function
目前我将此作为noItems()
函数。
function noItems() {
var promise = Promise(function(resolve, reject) {
if (true) {
resolve();
} else {
reject();
}
}).then(function(){
var emptyResponse = {success:true, response:{records:[]}}
return emptyResponse
});
return promise
}
我看过涉及$httpBackend
的答案,但这看起来有点矫枉过正。我也看到了使用$timeout
的建议,但我再次错过了让它发挥作用的建议。
答案 0 :(得分:1)
这里我使用$ q而不是Promise做了一个例子(代码Link to the example似乎更清晰一点,如果有人向您的服务器发出http请求,您应该尝试从服务器返回错误使用你的应用程序会崩溃,因为你正在对6个字符进行验证。
如果服务器执行此验证,它应该返回错误消息或其他内容,因此您不必在客户端执行该逻辑。
我假设服务器没有这个并给出一些建议