Ash*_*han 3 rest spring angularjs angular-resource ngresource
尝试使用 angular js 的 $resource 服务从 spring restcontroller 发送 get 布尔值,但没有得到任何响应 $resource.get。我需要在客户端或服务器端添加任何额外的东西来获取布尔资源。下面是我的休息控制器和 $resource Rest 控制器的代码 -
@RequestMapping(value="validate/company/{companyName}",method=RequestMethod.GET,produces={"application/json"})
public Boolean validateCouponCode(@PathVariable("companyName") String companyName){
return companyService.exists(companyName, Column.SITE_NAME);
}
Run Code Online (Sandbox Code Playgroud)
Angular js 的 $ 资源 -
function validateCompanyFn(companyName)
return $resource("admin/rest/company/validate/company/:companyName")
.get({companyName:companyName}).$promise
}
Run Code Online (Sandbox Code Playgroud)
我在做什么错?请建议,如果有另一种使用 $resource 获取布尔响应的方法,并且在服务器端不使用任何额外的对象
该$resource.get方法只返回对象引用,不返回布尔值。
重要的是要意识到调用$resource对象方法会立即返回一个空引用(对象或数组取决于isArray)。从服务器返回数据后,现有引用将填充实际数据。
在幕后,该$resource服务用于angular.copy填充对象。
角度复制
创建源的深层副本,它应该是一个对象或一个数组。
- 如果提供了目标,则删除其所有元素(对于数组)或属性(对于对象),然后将源中的所有元素/属性复制到该目标。
由于布尔值没有元素/属性,因此不会复制任何内容。
要返回布尔值,请使用$http 服务:
//USE $http service
function getSubCategoryIdNameFn(catId){
var url = "admin/rest/subcategory-id-name/" + catId;
return $http.get(url).then(function(response) {
return response.data;
});
};
Run Code Online (Sandbox Code Playgroud)
没有必要制造一个承诺,$q.defer因为$promise已经是一个承诺。只需返回$promise
//SIMPLIFY
function getSubCategoryIdNameFn(catId){
//var deferred = $q.defer();
//vvvv RETURN the $promise
return $resource("admin/rest/subcategory-id-name/:catId",{catId:"@catId"})
.query({catId:catId})
.$promise
//.then(function(response){
// deferred.resolve(response);
//},function(error){
// deferred.reject(error);
//});
//return deferred.promise;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2285 次 |
| 最近记录: |