码迷,mamicode.com
首页 > 其他好文 > 详细

学习总结

时间:2015-10-03 19:25:43      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:

Bug解决方法

 

Bug分类:

  1. 报错

解决方法:这种错误是最简单的,报错就有提示,可以根据错误提示慢慢调,一般都能跳出来。

  2.偶尔报错

解决方法:这种错误很奇怪,可能是因为某些数据的导致,如果造成这种错误的概率较小还好说,但如果是万分之一,十万分之一呢?

遇到这种错误可以先多录入写数据试试,找寻规律,如果找不到就只能正、逆向去推导代码,一步一步调试。

  3.不报错

解决方法:我认为这种错误是所有错误中的最困难的,这种就要靠我们的逻辑推理能了,根据已有的线索去推导导致这种现象的原因,我的老师曾说过这样一句话“一个优秀的程序员必然有着强力的逻辑推理能力”,这就是优秀程序员与普通程序员之间的差距。

 

今天遇到一个有点奇怪的错误,我用angular ui-grid写了一个表格树ui.grid.treeView,写好了一个例子暂且称为静态的,然后我将它封装成指令,封装好了后运行!报了一个错,可我在指令里面写的与我写的静态的完全一致,为什么会报错呢?先看看错误提示:

 

认真检查了指令代码后发现没什么错,先看看是不是由于使用时的环境不一样造成的,然后我测试了几遍发现了一个奇怪的现象:如果我先加载我写的静态的页面然后再进入指令界面一切OK,完全正常!如果我先进入指令页面,报错,我再进入静态页面发现静态页面也报错了。

 

根据错误提示查看发现是i18nService.get().grouping.aggregate_count获取失败

 

然后测试线是具体那个东西找不到,发现是i18nService.get().grouping是undefined的。i18nService是国际化的语言包怎么会undefined呢, 在我进入我写的两个页面之前我都会进入另一个指令暂且称为datagrid,封装的也是一个ui-grid,用于展示数据集合,我就在ui-grid的源码里面打断点调试,发现在datagrid时i18nService.get().grouping就已经是undefined了,只是因为里面没有用到它就浏览器没有提示,后面发现在datagrid指令里面有一样代码:

i18nService.setCurrentLang(‘zh-cn‘); 用是不是因为这行代码导致的呢?可这语法上也没什么错误啊,打开ui-grid的表格发现原来里面并没有中文的语言包,OK,将语言包导入,运行一切正常!大功告成?

NO,还有个东西没搞清楚,为什么先加载静态的就OK,先加载指令就成了呢,而且是都错了,是不是因为有什么公共的属性由于加载顺序导致的,可这里并没有什么公共的属性,于是又猜想是不是在我写的静态和指令里面设置了语言,加载顺序导致它设置出错了??

 

分析:当加载静态时,由于前面加载datagrid已经出错了,而在静态有重新将语言设置为了英文,而由于指令是最后加载,由于找不到中文的语言包而保错了!

 

希望大家为我这个新手菜鸟提供些解决问题的方法,感激不尽!!

 

学习总结

标签:

原文地址:http://www.cnblogs.com/gkl2013/p/4853705.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!