angular循环:数组内容完全一致报错

最近在项目开发过程中,遇到一个奇怪的问题,在模版中调用一个数据循环显示时候报错:
Duplicates in a repeater are not allowed.
难道angularjs不允许循环调用的数组里面的内容一致?
于是做了一个测试,

<div  ng-repeat="name in ['a','a','a']" >{{name}}</div> // angularjs报错
<div  ng-repeat="name in ['a','b','c']" >{{name}}</div>//  angularjs正常运行

看来angularjs在循环调用数组的时候,如果遇到数组内容值有相同的情况下,无法正常运行;

查了下资料,找到了解决方法,只要在后面指定排序方式即可:

<div  ng-repeat="name in ['a','a','a']   track by $index" >{{name}}</div>

 

不同bootstrap无法感知location变化

bug示例地址:http://jsbin.com/joxevaduzi/1/edit?html,js,output

问题描述:当地址中的hash值更改的时候,angular路由通知机制只会通知到第一个ng-include模块,忽略后面所有ng-include

这个问题很隐蔽也很难发现,本人在做项目的时候,页面中有两个bootstrap模块,但是很奇怪的是,每次路由发生变更,只有在初始化的页面模块中起到效果;跳到其他页面就完全无效了,
后面抽丝剥茧,发现最终原因,却没有解决的方法,绝望之际直接升级为 1.3.8版本,问题消失;果然是angular自带的bug啊!!!姐姐我心塞。。。

 

福建前端联盟第14期福州区会议

会议时间:8.23

会议地点:17173公司,

我的分享主题是:使用AngularJs开发Web应用

之前听到丸子说想组织一场前端分享会议,让我很兴奋;

福州这地方的分享氛围很弱;后面才知道这样的分享会议已经在厦门走过了13期了;

嗯,(┬_┬),原来是我没赶上大部队而已;

有幸得到丸子的邀请,在福州的第一次会议上分享了自己的经验,

因为没有分享的经验,所以之前还会有点焦虑;

说说这次的收获与不足之处;

鬼说分享会议,收获最大的是讲师,这点我给128个赞;通过这会议,我在整理PPT的时候,把相关知识都理顺了一遍,之前有些模棱两可的地方也变得清晰了;

而能把自己所走的弯路总结告诉大家,也是一件很幸福的事情;

不足之处:

最主要的还是没有贯彻会议的理念:分享经验,提出问题,讨论问题,解决问题;

一紧张就有点乱了;

时间没把握好,45分钟的时间我讲了快两小时,后面自己的问题都来不及展开讨论TOT,这也是自己准备的内容有点多有关;砍掉一半的内容会好很多;

总的来说,还算蛮顺利;丸子带病组织主持,情封和鬼从厦门过来,还有17173的一些朋友一起努力,小吕的自动化分享,一场会议活动的成功,是大家一起努力的见证,希望以后有更多这样的分享,一起进步;

git push 提示 gitlab_update 问题

今天在push一个git项目的时候,报错:

Counting objects: 173, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (117/117), done.
Writing objects: 100% (123/123), 33.09 KiB, done.
Total 123 (delta 61), reused 0 (delta 0)
remote: /home/git/gitlab-shell/lib/gitlab_update.rb:60:in `update_redis': undefined method `exitstatus' for nil:NilClass (NoMethodError)
remote:         from /home/git/gitlab-shell/lib/gitlab_update.rb:34:in `exec'
remote:         from hooks/update:13:in `<main>'
remote: error: hook declined to update refs/heads/develop
To git@git.quyun.com:yicloud/my.git
 ! [remote rejected] develop -> develop (hook declined)
error: failed to push some refs to 'git@git.quyun.com:yicloud/my.git'

 
查了下原因,是git的服务器内存满了,重启服务器后,操作:git push 正常;
原因是git在运行的时候,内存使用率越来越高,设置服务器定时重启,则可避开这问题;

echart自定义构建问题

由于项目需求比较简单,只需要用到echarts的柱状图和线状图,但是从官网下载的构建文件,按照官网的说明文档构建,则会报错:

echarts构建错误
echarts构建错误

仔细看了下报错提示,是缺少zrender文件,echarts是基于zrender控件的,

在构建的时候,除了需要官网提供的构建文件,还要在同目录下放zrender文件,才能构建成功;

同样,也可以从配置文件 config-tpl.js中看出依赖关系:

    // appDir: './',
    baseUrl: '../src',
    name: 'echarts',
    packages: [
        {
            name: 'zrender',
            location: '../../zrender/src',
            main: 'zrender'
        },
        {
            name: 'echarts',
            location: '.',
            main: 'echarts'
        }
    ],
    include:[   
        'echarts/chart/line',
        'echarts/chart/bar'
    ],
    out: 'echarts.js'
}

从代码看,可以明白执行构建语句,依赖 zrender与echart两个包;

zrender官网:http://ecomfe.github.com/zrender

zrender git:https://github.com/ecomfe/zrender

在echart build目录下修改配置文件:config-tpl.js 更新为自己需要的模块,

构建代码:

node build.js

 

 

关于angular的$http config.params参数含有数组的问题

今天在做一个AJAX请求的时候,遇到一个问题,在请求的url参数中如果含有参数为数组,

则最后解析的url地址会分别赋值给lan,

如下:这里假设开发域名为:dev.al.net

$http({
    url: "/test",
    method: "GET",
    params: {
        lan:["US","GB"]
    }
});

最后解析的结果为:http://dev.al.net/foo?lan=US&lan=GB

而不是期待中的:http://dev.al.net/foo?lan=US&lan=[‘US‘,’GB’] (低版本的angular,如: 1.0.8 可以解析正确)

解决方法:

将数组转换为json string值,如下:

$http({
    url: "/test",
    method: "GET",
    params: {
        lan: angular.toJson([
            "US",
            "GB"
        ])
    }
});

则可正常解析为:http://dev.al.quyun.net/test?lan=%5B%22US%22,%22GB%22%5D