使用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
});参考网址AngularJS - Any way for $http.post to send request parameters instead of JSON?
2. scope.$apply的使用
问题一般为:数据双向绑定失效,就是明明在controller里面给$scope.×××赋值了,在页面上xxx愣是显示不了,但是点击一下输入框或是form表单的提交按钮,xxx数据信息就显示了,是不是好坑啊。
解决方法 : 添加 $scope.$apply()
例如
$scope.$apply(function(){
$scope.xxx = “你赋的值”;});原因
一般情况下是不需要我们手动添加这一句代码的,因为angularJS本身在需要的时候调用,以达到我们所看到的数据双向绑定的效果。
但是你若是引用一个外部插件或者其他,在回调函数里创建或更新$scope.xxx的数据,因为外部插件本身已经脱离了angularJS的作用域,所以数据双向绑定在这里没有效果,只能手动添加$scope.$apply()来通知页面获取数据。
3. 因为是新手,一步一步的来
使用angularJS遇见的一些问题的解决方案的更多相关文章
- angularjs 遇见$scope,xxx=function()报错为该函数未定义
本包子今天遇见一个问题,就是明明写了$scope,xx=function()但是报错了,报错显示是该函数未定义,我就很着急的先将函数写成一个全局函数,就没问题,等下午有空的时候寻思了一下,为什么全局就 ...
- angularJS 数组更新时重新排序之解决方案一:这个坑,绕开吧,不跳了……
今天产品大人发现了一bug,图表数据和数据库总是对不上,原因是当前端更新数组时,angularJS默认对数组进行了排序. // 点击事件:input复选框 $scope.fnClickUpdateAr ...
- AngularJs 开发遇到的问题,以及解决方案
1>ng-if 导致 ng-model 失效的问题 比如说下拉联动隐藏显示的时候,多个验证模块,需要使用到ng-if.可以使用 $parent 来解决这个问题 ng-model="$p ...
- [开源] angularjs + Asp.net 前后端分离解决方案
本文版权归 博客园 萧秦 所有,此处为技术收藏,如有再转,请于篇头明显位置标明原创作者及出处,以示尊重! 作者:萧秦 原文:http://www.cnblogs.com/xqin/p/4862849. ...
- AngularJS中移动页面滚动穿透解决方案
()] + s[]) >= , preventDefault: false, click: IscrollAndroidBug.click() }); var _ele = document.g ...
- android 入门-android Studio 解决方案
一.当提示 解决方案: 1. 2. 二.从这步到这步 的时候,可能遇见下面的问题. 解决方案: 更新一下build-tools 19.1.0版本 放到你的sdk里并重启as. 三. 当遇见这样的情况 ...
- 3.1将AngularJS放入上下文
本章,作者将AngularJS放在全球web app开发的上下文里,并为后面的章节设置功能.AngularJS的目标,是带来一款工具,它有服务端开发web client的能力,并易于开发,测试,富.复 ...
- angularJs入门篇-hello world 开头
AngularJS 采用了完全不同的解决方案,它创建实时视图模板代替视图,而不是将数据合并进模板之后更新DOM. 任何一个独立视图组件中的值都是 动态替换的.这个功能可以说是AngularJS中最重要 ...
- Angularjs1.X进阶笔记(1)—两种不同的双向数据绑定
一. html与Controller中的双向数据绑定 html-Controller的双向数据绑定,在开发中非常常见,也是Angularjs1.x的宣传点之一,使用中并没有太多问题. 1.1数据从ht ...
随机推荐
- leetcode 191
191. Number of 1 Bits Write a function that takes an unsigned integer and returns the number of ’1' ...
- log4j输出模板
log4j.rootLogger=DEBUG, A1,A2 log4j.appender.A1.MaxFileSize=1kb#10个备份 log4j.appender.A1.MaxBackupInd ...
- 用CMake屏蔽Release运行时的控制台窗口
在默认情况下,CMake构建的VS工程运行时会弹出控制台窗口,可以通过手动方式进行屏蔽,也可以通过CMake命令进行屏蔽. 手动方式:分为两步 第一步:右击VS项目,选择"属性"- ...
- C# DateTime.ToString的坑
当需要将时间类型转换为字符串类型时,一般直接使用datetime.ToString()方法即可 1.直接使用ToString(),不带任何参数,代码如下 static void Main(string ...
- Centos7上安装dnf-plugins-core
为了在Centos上使用dnf copr命令,需要安装dnf-plugins-core,找了很长时间,包括试了源码编译安装都不行,最后找到了方法,执行下面的命令就可以了. 需要root权限 wget ...
- jacob操作word
http://wang-ping001.iteye.com/blog/1452057 ————————————————————————————————————————————————————————— ...
- jquery实现章节目录效果
<html><head><title>jquery实现章节目录效果</title> <script type="text/javascr ...
- 【原】git如何删除本地和远程的仓库
今天操作git时遇到一个小问题:如何删除本地和远程的仓库,在网上巴拉一番解决了这个问题. 方法1: $rm testfile$git add -u $git commit -m "delet ...
- [原创]多版本Java环境变量的配置
起因: 偶然突发兴致, 收拾下自己的老T500电脑, 用来做个家庭开发用机. 应为每次装系统都有GHOST备份的习惯, 所以需要提前搭建好开发环境. 而且新装系统的目的之一, 也是想研究下Andr ...
- 一个简单xml数据转换为数组的方法
本人用easywechat做微信回复图文,从数据库中拿到的数据直接是xml拼好的数据,但是框架只有自带的获取xml格式的语句,所有需要将xml数据中所需要的数据拿出来用来拼接. 搜了好多资料说的都很麻 ...