因为我最近在使用angularJS,就把angularJS中遇见的一些问题和解决方案写出来和大家分享一下。
1. angularJS的$http.post请求,SpringMVC后台接收不到参数
问题一般为:400 Required String parameter ‘rPassword’ is not present 或其他400错误
解决方法:我试了一下,可以采用这个方法,修改提交参数config的headers和transformRequest:
(1) 创建一个全局的transformRequest function
var app = angular.module(‘myApp’);
app.config(function ($httpProvider) {
$httpProvider.defaults.transformRequest = function(data){
if (data === undefined) {
return data;
}
return $.param(data);
}
});
然后为每一个方法或者创建一个全局的Content-Type header:
$httpProvider.defaults.headers.post[‘Content-Type’] = ‘application/x-www-form-urlencoded; charset=UTF-8’;
(2) 为每一个需要的方法创建局部的transformRequest:
var transform = function(data){
return $.param(data);
}
$http.post(“/foo/bar”, requestData, {
headers: { ‘Content-Type’: ‘application/x-www-form-urlencoded; charset=UTF-8’},
transformRequest: transform
}).success(function(responseData) {
//do stuff with response
});
2. $scope.$apply的使用bug
bug:数据双向绑定失效,就是明明在controller里面给$scope.×××赋值了,在页面上xxx愣是显示不了,但是点击一下输入框或是form表单的提交按钮,xxx数据信息就显示了,是不是好坑啊。
解决方法 : 添加 $scope.$apply(),我是这样做的:
$scope.$apply(function(){ $scope.xxx = “你赋的值”;
});
原因:
一般情况下是不需要我们手动添加这一句代码的,因为angularJS本身在需要的时候调用,以达到我们所看到的数据双向绑定的效果。
但是你若是引用一个外部插件或者其他,在回调函数里创建或更新$scope.xxx的数据,因为外部插件本身已经脱离了angularJS的作用域,所以数据双向绑定在这里没有效果,只能手动添加$scope.$apply()来通知页面获取数据。
相关资源:阿P软件之划词复制v1.20绿色版-其它代码类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!