ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
`审查人:白占宁` `被审核代码负责人:舒曼` `代码地址:https://192.168.1.240:8443/svn/repos/source-analysis` ### 比较好的地方 * 注释很完善,并且很规范。 ### 存在的问题 #### 1、Handlebars中的helpers定义到调用的方法外面 ``` Handlebars.registerHelper('addKey', function(index){ return index + 1 }) ``` 解决方案:将以上定义定义到初始化方法中或单独放到一个helper.js文件中,避免重复定义。 #### 2、避免拼接字符串 ``` paging: function(totalPage, currentPage){ var pagingHtml = '' for(var i = 0; i < totalPage; i++){ pagingHtml += '<span><b></b></span>' } $('.ball-page p').html(pagingHtml) $('.ball-page span').eq(currentPage-1).addClass('active') } ``` 解决方案:使用模板代替,不要拼接字符串,该问题的修改可延后。 #### 3、避免无意思的方法声明 ``` 'cx': function(d, i){ return 0 }, 'cy': function(d, i){ return svgHs / 2 - 30 }, ``` 解决方案:固定值时不用写function,如下: ``` 'cx': 0, 'cy': svgHs / 2 - 30 ``` #### 4、每个变量都单独使用`var`声明 ``` var width = 0, height = 0, cfg = {}, svg = ''; ``` #### 5、方法定义位置不对 ``` function start(){ svg.selectAll('*').remove() pageBox.forEach(function(data, i){ var svgWs = 0; var svgHs = 0; if(i == (g-1)){ svgWs = svgW1; svgHs = svgW1; }else{ svgWs = svgW; svgHs = svgH; } var cirbox = svg.append('g') .attr({ 'transform': function(){ if(i == (g-1)){ // ...... ``` 解决方案:`start()`方法不要定义到`init()`方法内部,另外`forEach`循环体中操作的内容过多。 #### 6、data方法绑定数据问题 ``` var updataMiddleCir = updataCirSvg.selectAll('.middleCir') .data(function(d){ return [data] }) ``` 解决方案:使用如下的方式: ``` var updataMiddleCir = updataCirSvg.selectAll('.middleCir') .data([data]) ```