我在我的项目中使用 Angular xeditable。
我正在为我的网格使用 Angular xeditable row 组件。
据我所知,如果我使用
return $http.post('api/students',model).sucess(function(data) {
})
.error(function(data) {
}) ;
据我所知,会发生什么 - 上面的代码将调用学生 CONTROLLER post 方法 Web api。如果返回OK,则执行成功并返回,否则执行并返回错误。
但我的问题是 - 我可以从 JavaScript 本身调用
.error
调用吗?
比方说:
if( textbox == "")
return $http.post().error().......
else
return $http.post().sucess()....
为什么我想要这样的东西?
因为对于单个文本框,我必须进行服务器检查以检查它是否为空。如果它不为空,我返回 OK(),否则我返回(比方说)NotFound()。
OK 将执行成功调用,NotFound 将执行错误调用。
所以在 JS 端,如果我检查字符串是否为空。如果强制清空(没有服务器故障)我想“返回”.error 回调。可以吗?
$http.post 会使服务器运行,我知道这一点。但是如果我想强制返回错误承诺,在客户端怎么办?
您可以使用
$q
库来拒绝承诺。
返回错误承诺:
angular.module(....)
.service('myService', ['$q', '$http', ....,
function($q, $http, ....) {
...
this.myFunction = function(data) {
if (isValid(data)) {
return $http.post(....);
} else {
return $q.reject("rejection message");
}
};
...
}]);
如果您不想在没有有效输入的情况下发出 HTTP 请求,只需在执行任何操作之前检查输入即可。像这样:
if(<valid input>) {
return $http.post('api/students',model)
.success(function(data) {
})
.error(function(data) {
}) ;
} else {
// don't do request
}