• 使用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. 因为是新手,一步一步的来

  • 相关阅读:
    Selenium(三)webdriver的API与定位元素
    代码验证和动手动脑
    课程作业01实验报告1,2,3
    动手动脑
    课程作业03实验报告
    课程作业02实验报告
    猜数字实验报告
    java各种问题总结和一些讨论
    java从命令行接受多个数字并求和
    java登陆界面实验报告
  • 原文地址:https://www.cnblogs.com/bsping/p/3963138.html
Copyright © 2020-2023  润新知