首页 加入收藏

使用angularJS遇见的一些问题的解决方案

2014年09月10日 10:13供稿中心: 课工场
摘要:使用angularJS遇见的一些问题的解决方案

1. angularJS的$http.post请求,SpringMVC后台接收不到参数值的解决方案

问题一般为:400 Required String parameter 'rPassword' is not present 或其他400错误

解决方法 一:修改源码http://my.oschina.net/buwei/blog/191640   (可以详细了解请求接收不到的原因)

解决方法 二:感觉修改源码总是不好滴,可以采用这个方法,修改提交参数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的使用

问题一般为:数据双向绑定失效,就是明明在controller里面给$scope.×××赋值了,在页面上xxx愣是显示不了,但是点击一下输入框或是form表单的提交按钮,xxx数据信息就显示了,是不是好坑啊。

解决方法 : 添加 $scope.$apply()

例如

$scope.$apply(function(){   $scope.xxx = “你赋的值”;
});

原因

一般情况下是不需要我们手动添加这一句代码的,因为angularJS本身在需要的时候调用,以达到我们所看到的数据双向绑定的效果。

但是你若是引用一个外部插件或者其他,在回调函数里创建或更新$scope.xxx的数据,因为外部插件本身已经脱离了angularJS的作用域,所以数据双向绑定在这里没有效果,只能手动添加$scope.$apply()来通知页面获取数据。


标签: 北大青鸟 java
  • 相关阅读
武汉北大青鸟徐东校区喜迎夏季就业开门红2017.07.28
北大青鸟华腾校区:有意义的夏令营活动会多开展2017.07.27
北大青鸟华腾校区:从不善言辞到出口成章2017.07.27
喜报!深圳嘉华学校学员成功海外就业薪资高达2.3万2017.07.24
北大青鸟光谷校区“西瓜节”---学好代码,吃饱西瓜!2017.07.20
  • 全国校区查询
  • 新手入门点击榜
  • 新手入门最新文章
  • 热门标签
关于我们
公司简介
发展历程
青鸟荣誉
联系我们
加入我们
青鸟课程
ACCP
学士后Java
BENET
网络营销
启蒙星IT工程师基础课程
学习客户端下载
青鸟优师
青鸟微讯
学士后Android软件工程师
网络营销师1.0
关注我们
RSS订阅
北大青鸟网络营销学院
北大青鸟学员社区
北大青鸟官方微信
北大青鸟微社区
回顶部 新版反馈 回到首页
官方新版意见收集

*

官方新版意见收集

提交成功,感谢您的反馈。

我们会认真阅读和考虑每个用户的反馈。