一些关于angularJS的自己学习和开发过程中遇到的问题及解决办法

这篇文章也许会不定时更新,主要记录这段时间内自己遇到的angularjs学习开发的一些问题的解决办法。本文以摘抄为主,主要目的还是将自己遇到的困惑在各个地方查到的解决办法的汇总,给自己留个备忘吧。

1、新手在初次使用angularJS router的时候往往会忘记引用angular-route.min.js以及注入相关依赖,导致类似
Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.2.0rc1/$injector/modulerr?p0=muninn&p1=Error%…eapis.com%2Fajax%2Flibs%2Fangularjs%2F1.2.0rc1%2Fangular.min.js%3A31%3A252)

报错。

解决方法:引用并注入对应的依赖。

引用来自:

http://stackoverflow.com/questions/18287482/angularjs-1-2-injectormodulerr/18287586#18287586

2、ngCLass,可以使用ngClass来控制某些节点的css样式,来实现一些诸如显示与否的操作,这里引用一篇ngClass的介绍

来自:http://www.cnblogs.com/whitewolf/archive/2013/05/22/3092184.html

3、angular重写的form的使用tip,先描述我遇到的问题:
  1. 通过后端接口返回的一组数据绑定到scope对象再循环打印到一个表格中,选中表格其中一行来进行修改信息。
  2. 需要对不同的字段做不同的验证,并且存在非必填字段如果填写也需要格式验证,验证不通过不提交
  3. 对未进行过修改的表单不提交

解决方法:

  1. 数据绑定这块儿不需要赘述,给循环的tr标记绑定ngCLick事件,

    传入循环的一组data数据,为了去掉传入的数据与弹出修改信息数据之前的双向绑定,可以使用angular.copy()方法复制一份数据然后再绑定到表单上面。

  2. 对不同的表单进行验证,则可以参考下面的这一篇文章
    http://www.cnblogs.com/lvdabao/p/3533585.html
  3. 对于未修改的表单可以参考配合gDisabled="memberForm.$invalid || memberForm.$pristine"来进行处理

  4、分页管理,网上有很多的angular的分页管理的资料,我这边根据自己的需求写了一个自己分页,也许不适合大众,仅供参考

    我的设计思路如下:设计背景是后端的同学提供本次查询的所有条目以及每页数量以及当前页码,我这边根据总数计算出页数,其中页数的显示为,以当前页为中心显示就近的前后8页,如果当前页在4页之前或者在最后的四页之内,则依次顺推显示够9页

                  

                                if (resp.data.page.rowsCount == 0) {
                                    $scope.noSearch = false;

                                }else{
                                    $scope.noSearch = true;

                                }
                                $scope.memberInfo = resp.data;

                                $scope.pagination = {};
                                $scope.pagination.length = Math.ceil(resp.data.page.rowsCount / resp.data.page.pageSize);

                                $scope.perPage = false;
                                $scope.nextPage = false;

                                if($scope.memberInfo.pageIndex == ‘1‘){
                                    $scope.perPage = true;
                                }else if($scope.memberInfo.pageIndex == $scope.pagination.length){
                                    $scope.nextPage = true;
                                }

                                $scope.isActive = function(data){
                                    if(data == $scope.memberInfo.pageIndex){
                                        return true;
                                    }else{
                                        return false;
                                    }
                                }

                                $scope.pagination.info = [];

                                if($scope.pagination.length > 10){
                                    var upBoundary = parseInt(resp.data.page.pageIndex) + 4 > 9 ? parseInt(resp.data.page.pageIndex) + 4 : 9;
                                    upBoundary = upBoundary <= $scope.pagination.length ? upBoundary : $scope.pagination.length;
                                    var downBoundary = parseInt(resp.data.page.pageIndex) - 4 < 1 ? 1 : parseInt(resp.data.page.pageIndex) - 4;
                                    downBoundary = $scope.pagination.length - downBoundary >= 9 ? downBoundary : $scope.pagination.length - 9;
                                    var currentPage = parseInt(resp.data.page.pageIndex);

                                    for(var i = 1; i<= $scope.pagination.length; i++){
                                        var up = i <= upBoundary && i >= currentPage;
                                        var down = i >= downBoundary && i <= currentPage;
                                        if(up || down){

                                            $scope.pagination.info.push(i);

                                        }
                                    }
                                }else{
                                    for(var i = 1; i<= $scope.pagination.length; i++){

                                        $scope.pagination.info.push(i);

                                    }
                                }      

  最后的设计结果显示如下图:

  

  不足9页的自动以实际数量为主,具体的单击每页的效果可以单独写,并不复杂

  5、省市区级联,在表单里面进行地址输入的时候,能够选择省市区的情况下自然就比用户手动输入要方便并且能够保证数据的准确性。这里我所遇到的情况便是后端同学通过接口不同的状态返回不同的查询结果来供我进行省市区的级联调用,配合用户已经数据的数据进行接口信息调用。

  设计思路如下,如果表单内已经包括,则根据后端返回的省ID进行级联查询,如果没有则绑定ngChange事件在select元素上面,最终实现,一致的效果。这部分的代码比较简单,这里就不贴示例了

以上便是我这个项目开发过程中备忘的结果,说不定以后不定期更新。

时间: 2024-11-08 17:20:05

一些关于angularJS的自己学习和开发过程中遇到的问题及解决办法的相关文章

学习安卓开发过程中遇到关于R.Java文件的问题

在学习安卓开发过程时,遇到R.java生成问题,总结几个方法决解. 1.首先必须做的就是检查代码的正确性,存在错误的代码,不编译生成R.java 2.右键点项目,选择 Android Tools -> Fix Project Properties 3.点击导航上的Project,将Build automatically 勾上. 4.点击导航上的Project,Clean 项目. 5.如果新增Id (@+id/test)时,出现R.java内不生成id的情况,可删除工程下 gen 文件夹,重新编译

分享 学习PHP开发过程中的一些好用的在线资源

本文用于记录和分享学习过程中一些好用的在线资源 天气预报在线插件: http://www.tianqi.com/plugin/ 优点:提供免费的天气预报接口,提供定制功能,可以在网页中直接生成了天气预报信息. 浏览器市场份额统计 http://tongji.baidu.com/data/browser (持续更新中...)

Selenium学习(三)Selenium总是崩溃的解决办法

在使用selenium打开浏览器总是崩溃,最近查资料获得可行的解决办法: 1 import sys 2 from selenium import webdriver 3 4 p = __import__('selenium.webdriver.firefox.webdriver',fromlist=('WebDriver')) ##### 5 url = 'https://www.zhihu.com/#signin' 6 driver = p.WebDriver() ##### 7 driver

二.JSP开发过程中遇到的问题及解决

一.开发环境问题 问题一:Failed to load the JNI shared library 启动Eclipse时弹出“Failed to load the JNI shared library……”这样的一段提示,如下图: 大概意思就是说在某个位置找不到 jvm.dll 这个文件 原因1: 指定目录下 jvm.dll 不存在,可能是安装过程中文件损坏了或者勿删了文件. 对策: (1)重新安装jre或者jdk并配置好环境变量. (2)copy一个jvm.dll放在该目录下. 原因2: e

hadoop实战---Hadoop开发过程中遇到的问题和解决方法

先上正确运行的显示: 错误1:变量为IntWritable,接收的是LongWritable,如下图: 原因,多写了参数reporter,如下图: 错误2:数组超出边界,如下图: 原因:设置了combine类,如下图: 错误3:nullpointerexception异常,如下图: 原因:静态变量为null,赋值即可,如下图: 错误4:进入了map,但是无法进入reduce,且直接把map的数据输出了,并且无错误提示 原因:Hadoop新老版本问题,实际是实例化异常,如下图: 错误5:进入主函数

linux学习工作中遇到的问题及解决办法

1.yum install system-config-kickstart Error: Package: system-config-date-1.9.60-3.el6.centos.noarch (base) Requires: python(abi) = 2.6 Installed: python-2.7.5-58.el7.x86_64 (@anaconda) python(abi) = 2.7 python(abi) = 2.7 Available: python-2.6.6-66.el

学习Android过程中遇到的问题及解决方法——电话监听

也许有时你会有这样一个需求:通电话时有一个重要的事需要记下来或者和一个陌生人特别是大骗子通话时,这是就想如果能把通话录下来就方便多了.(这才是我写这个代码的目的!!!) 在此过程中,犯了一个很大的错误.对电话状态还不熟悉就开始编程,使得我就算编写正确也出现各种bug. 先将代码列出来,供大家参考,然后解释错误和相关知识. activity_main.xml: 1 <?xml version="1.0" encoding="utf-8"?> 2 <L

AngularJs我的学习整理(不定时修改)

最近一月份的日子,学习了AngularJs,还只是刚刚入门而已.了解了基本的语法规则以及很简单的应用.仔细想想,学习AngularJs的时间大概半个月的时间,每天花在AngularJs上两三个小时. 在短短的学习入门时间,也想简简单单地做一个阶段性的总结.下一次的学习应该是进阶.计划准备在NodeJs入门之后进阶AngularJs和NodeJs. AngularJs是什么东东? AngularJS 使得开发现代的单一页面应用程序变得更加容易(单一页面应用程序SPAs:Single Page Ap

iOS开发过程中使用Core Data应避免的十个错误

原文出处: informit   译文出处:cocoachina Core Data是苹果针对Mac和iOS平台开发的一个框架,主要用来储存数据.对很多开发者来说,Core Data比较容易入手,但很难精通,如果没有正确的学习方法,你将很难真正理解它,更不用说精通了.很多开发者常常在这方面犯一些错误,而这篇文章列出了开发者在iOS开发过程中使用Core Data常见的一些错误,并对如何避免这些错误进行了分析.  1.不了解关键术语 对于iOS开发者来说,会使用Core Data是一项必备技能.