AngularJS ng-repeat下使用ng-model

举例: blue:<input type="radio" value="1" ng-model="selectValue"/> red:<input type="radio" value="2" ng-model="selectValue"/> yellow: <input type="radio" value="3" ng-model="selectValue"/> 以上代码实现一个单选框功能,当你选中其中的一个单选框,可以从$scope.selectValue中得到你选中的的选项的value。 同时改变$scope.selectValue的值,也可以让界面上选中相应的单选框。 假设单选框的个数是不固定的,用ng-repeat来展现。 <table> <tr ng-repeat="row in collections"> <td> {{row.name}}: <input type="radio" value="{{row.value}}" ng-model="selectValue"/> </td> </tr> </table> 当你书写了上述代码后。你会发现点击其中的对话框,$scope.selectValue中并没有保存你选中的对应单选框的值。 这是因为处在ng-repeat之间的代码,对全局的$scope里变量的内容是不可见的,像{{row.name}}里的row,并不是全局$scope里的成员。 而是为ng-repeat创建的子scope里面的。所以要引用全局$scope里的成员,你可以使用$parent 来引用全局的$scope <table> <tr ng-repeat="row in collections"> <td> {{row.name}}: <input type="radio" value="{{row.value}}" ng-model="$parent.selectValue"/> </td> </tr> </table>

2014年2月19日 · 1 分钟

artdialog 弹出对话框怎么关闭自己

artDialog是一个基于javascript编写的对话框组件,它拥有精致的界面与友好的接口。 如果你想在弹出的对话框里,加一个自己的按钮,来关闭自己,普通对话框可以使用以下方式: //artdialog弹出对话框之后会返回一个dialog句柄 var dialog = art.dialog(content, ok, cancel) //你可以在对话框事件中通过该句柄的close方法,将对话框自己关闭。 function closeSelf(){ dialog.close(); } 如果是弹出一个iframe对话框呢?获得的对话框句柄在是父窗体里的,需要在子窗体里使用该句柄把自己关掉。 artdialog提供了框架之间的数据传递方式,你要包含artDialog.iframeTools.js方法。 var temp = {}; art.dialog.data('temp', temp); temp.dialog = art.dialog('../childframe.html'); 这样你的数据就穿越了。在childframe.html的js里,你可以使用下面的方式获取自己的窗口句柄,然后关闭自己。 function closeSelf(){ var dialog = art.dialog.data('temp'); dialog.close(); }

2014年2月18日 · 1 分钟

SEO我做了哪些优化

新买了域名,开通了网站,才听到有SEO(Search Engine Optimization 搜索引擎优化)这个名词。 原来网站要被各大搜索引擎收录,要做那么多事情才行。为此通过我自己的了解,我针对我的网站进行了下面的优化工作。 1、把网站提交到各大搜索引擎。 在百度中搜素 谷歌网址提交入口,百度网址提交入口,搜狗、360搜素提交入口,可以很快得找找到各大搜索引擎的网址提交入口, 告诉这些搜索引擎们,我的网站诞生了,你派蜘蛛来爬吧,呵呵。 2、内容优化,我使用了wordpress的框架,找了一副叫Catch-box的主题,简约简单。保证搜索引擎爬虫在爬你的网站的时候不会出现这样那样的错误。 确定我的主题和关键字,并且写在header.php里,保证让搜索引擎大体知道你的网站主要是做什么的。 <meta name=“keywords” content=“华为, 荣耀3c, java, mysql, javascript”/> <meta name=“description” content=“赵岩的个人博客,关于java,web,javascript,mysql等技术的分享,同时站长是一个花粉,同时会介绍一些关于华为手机、荣耀手机的评测和玩机心得。”/> 3、新建的网站是个迷宫,搜索引擎可能对你这个不知名的小网站,是没有耐心全站扫描的。所以你要为他们提供一副地图。也就是sitemap文件。 我用的wordpress,安装了Baidu-Sitemap和Xml Sitemap插件,分别生成符合百度和谷歌要求的sitemap文件,并且分别在他们提供的站长工具中提交sitemap的地址。 同时设置了每次添加文章的时候自动更新sitemap,保证第一时间通知搜索引擎你有新东西了,来找我呀。 4、很重要的一点,主要是针对百度,我也是最近两天才知道的,我已经发了几篇博客了,发现google收录了很多,而百度只收录了首页。 这时我了解一个概念叫静态url,也就是搜索引擎对静态的url比较感兴趣,因为它认为这样的网页变化小,可以抓取快照等等,而对于动态网址,则没多大兴趣。 举例说,我原来一篇博文的地址是http://zhaoyanblog.com/?p=90 它会认为你的网址是http://zhaoyanblog.com,p是参数,所以它认为你的http://zhaoyanblog.com/?p=90是不稳定的网页 很有可能就不收录了。 但是PHP代码是动态网址啊,怎么办呢,最后还是通过度娘知道,wordpress是可以设置固定链接格式的,也就是伪静态URL, 最后我把格式全部设置成了http://zhaoyanblog.com/archives/90.html这样的格式, 但是我在wordpress里设置好了,访问http://zhaoyanblog.com/archives/90.html,却返回404页面,还是度娘给了答案,需要对apache进行设置,加载个模块,这个你可以自己去问度娘了。 最后这样百度应该就会认为这个网页是静态的了吧,静观其变吧。 忘记说了,百度的站长工具里有句说明,如果你的网站改版的话,旧网址一定要301转向新网址,否则的话你的旧网站就成了死链,会影响搜索引擎对你的好感。 5、给网站做个站内统计,我用的是CNZZ网站提供的统计功能,这个可以让你看到你的网站流量来源,以及用户都是通过搜索什么关键字才找到你的网站的,这样你的网站的内容会更有针对性。 6、最后一点,也是从网上看来的,说百度或者某些搜索引擎,在刚刚收录一个新网站的时候,都会有一两个星期到一个月的考验期, 在期间,百度只会收录你的首页,如果你的网站不更新或者关掉了,那百度也不对你感兴趣了,在期间你要匀速的更新维护,过了这个考验期,百度才会井喷式的收录你的网站。 这样靠个人的坚持了。 以上是我这几天针对SEO做的优化总结。

2014年1月15日 · 1 分钟

荣耀3C值得买的八大理由

1、良心价格 荣耀3C这样的配置在千元机里算是顶配了,而且798的价格也是给力的。 2、拿得出手的外观 荣耀3C的熊猫外观,再加上华为的牌子,绝对是拿的出手的,绝对没有山寨机的感觉。 3、电池可以使用两天 华为独有的省电优化设计,重度手机用户可以玩一天,普通用户绝对两天没问题,之前用小米1S一定要一天一冲,现在用荣耀3C,真的可以两天一冲。 4、内存够用,系统流畅 本人亲自测试,开十几个程序没问题,QQ,微信,微博,浏览器全开,剩余内存总是可以保持在100M左右,仍然流畅运行,桌面滑动十分流畅,一点问题没有。而且还有2G版。 5、简单桌面,老年人也可以使用。 还在给父母买诺基亚吗?荣耀3C自带老人模式,功能一目了然,父母也会用触摸屏了,还可以教他们用来看电影,上网,着实不错。FMUI的桌面比较简单上手,不像MIUI那么臃肿复杂。 6、相机不错 学生党800块钱你可以买到前置摄像头500万像素的摄像头吗?想红米一样130万的前置摄像头,拿来自拍有意义吗? 7、有块好屏幕 荣耀3C采用Iphone5S使用的屏幕材质LTPS全贴合屏幕,知道红米使用的啥材质的屏幕吗?Iphone3之前使用的a-si屏。荣耀这个的确要甩红米几条街。 8、更容易买到 华为的生产速度和发货速度绝对是开足了马力,几乎是7天一次购买,准备的货一次比一次多,相比已经开卖了几个月的红米来说,绝对更容易买到,而且相信完全开放购买的日子也不远了。

2014年1月14日 · 1 分钟

Tomcat配置gzip提高js文件下载速度

在tomcat的conf/server.xml文件的Connector节点中 增加如下配置: <Connector port="8080" redirectPort="8443" compression="on" compressionMinSize="10240" noCompressionUserAgents="gozilla,traviata" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" /> 说明: compression=“on” 打开压缩功能 compressionMinSize=“10240” 启用压缩的输出内容大小,这里是10k noCompressionUserAgents=“gozilla, traviata” 对于以下的浏览器,不启用压缩; compressableMimeType=“text/html,text/xml,text/javascript,text/css,text/plain” 要压缩的文件类型MIME TYPE tomcat的压缩效果很明显,对于90多k的画图js插件 ichartjs(http://www.ichartjs.com),压缩之后只有27.8k,压缩率30% 大大提高了网站的访问速度。

2014年1月13日 · 1 分钟

我是怎么样从米粉变成米黑的

我在上学的时候,就喜欢玩手机,折腾手机,一开始是手机刚有的年代,买的手机是诺基亚 3120。花了700块钱。不断的玩,记忆不是很深刻了,反正最后被我摔坏了。然后又不好意思给家里说,就花300块钱买了一个诺基亚1110,还记得里面有个可以自己编曲子的程序,编写个两只老虎做起床铃,还有里面的三个经典的游戏,小鸡下楼,贪吃蛇和投骰子。 后来是诺基亚的彩屏手机诺基亚1680c,移动定制机,充话费送的,S40系统,然后不断的更新主题,记得当时常去下主题的网站是www.shouji.com.cn。还有一些java程序,找一些改版的java QQ 装进去。RAM小 ROM小,好多软件装不进去,看到人家用诺基亚所谓的智能机,真是羡慕啊。一直想买个诺基亚N73后来找了一份实习,有了钱,狠了狠心,想买个智能机,才发现N73停产了,买了一个诺基亚6120c,然后又是穷折腾,诺基亚6120c是 s60v3 系统,需要装sisx 格式带签名的软件,然后又琢磨怎么给sis格式的程序签名,怎么突破塞班系统的21种权限。更改开机画面啥啥的。然后又看到人家用诺基亚5230 s60v5系统,支持触控,又羡慕了,不过忍住了没买。 后来又过了不到1年,发现安卓出现了,宿舍有同学当时买了一个三星很早的一个安卓系统的手机,好像是三星7500? 反正那时候安卓还是1点几的版本。充满好奇心呢,总是凑上前去摸摸看看,很不理解,手机是可以用拇指肚来操作的。 眼睁睁的看着安卓手机的发展,后来是深圳的魅族手机出来了,M8到M9,大家排队买。四四方方,着实想拥有啊。智能机突然就这样被重新定义了,手里的诺基亚6120c,塞班S60系统,就给了一个新称呼 “伪智能机”。后来快毕业了,忍不住了,一定要有个智能机,然后从一个隔壁学校的一个学生那里买了一个二手的 移动定制的ZTE手机 U880,当时也算街机了吧,安卓入门机,着实兴奋了一阵子,然后陷入了不断root啊,刷机啊的进程中。。。。。 其实在中间小米已经出来了,不过好像记得那时候小米手机是采取的先付款预定,再发货的流程,记不清楚了,反正同学买的, 看着我着实流口水,相较于魅族还便宜好多。特别是深邃内涵的屏幕(当时我为什么不看看背面撒。。。。) 然后拿着我的二手移动定制机ZTE U880,我就上班了,我就告诉我女朋友,发了工资,我一定要买个小米手机。然后小米发布了两款手机小米1s和小米2小米1s开始预定开始卖,小米2好像憋了很久才卖,我忍不住了,1499,我就要小米1s了,比小米1增加了前置摄像头,频率提高的1.7G 还可以啊。然后盯着屏幕抢,抢到那一刻,我还是很兴奋的(雷军你成功了),然后漫长的等待,就是不发货,我就找客服唧唧歪歪,没想到几个小时之后就显示订单出货了,我一直是以为是我和客服说的缘故。后来拿到手机了,包装高端大气上档次,连说明书都高端大气上档次。手机拿在手里沉甸甸的,舒心呢。我上大学的时候,教模拟电子电路的老实说过了,买电子产品嘛,越沉越好。。。。再反过来小米手机,看背面的那一刹那,我心里稍微有那么咯噔了一下,没人告诉我,小米手机有个这么丑的后盖啊,啥弧度啊,相机都突出来了。不过当时确实兴奋掩盖了这么一点不满,然后是MIUI,只能用兴奋来描述,MIUI确实做的不错,到现在我也这么认为。无论是移动图标,便签,主题,相机,相册,一键升级,权限控制,共享上网,连文件管理器我都觉得做的棒,隐藏了好多让用户方便的小细节,后来升级到V5就更华丽了,计算器,录音机,指南针都很漂亮。回到买完小米手机的当初,很兴奋,然后还帮同事抢了一台,到处给同学同事演示MIUI的妙处,贴膜都从普通的到磨砂的都换了好几张。 但是时间一长,我渐渐感觉到小米1s的瑕疵让我寝食难安,首先是后盖,什么没有设计的设计啊,什么优化握感啊,就是内部空间安排不合理,造成了相机突出,后面突出,只有增加后盖边缘的弧度,才让手机看着薄一点。后来买了个方形后盖,虽然厚了好多好多,更新板砖了,但是也看着高端大气上档次了~ 找个心理安慰吧。 其次是配件,官方网站出了新款手机就忘了旧款手机,除了小米1s 和 小米2 小米1就不再官方网站显示了,出了小米2A 2S 和小米3 然后小米2以下的都不显示了。 小米1s升级到MIUI V5之后好多问题,首先是内存用用就没了,然后是手机通话音量不能调节大小,拍照片泛白,这些问题已经在MIUI论坛上反映了好多了,都盖了章说反映给了开发组,V5到现在迭代了多少轮了,最终没有解决!现在我打电话对方都听不到声音,这时候要重启才可以,也不知道是硬件原因还是软件原因。 还有相应的配件越来越少。你看看人家魅族,现在出了魅族MX3了,魅族M8,甚至M6的介绍都在网上放着,人家是真心真意的打磨每一款产品。你再看看小米,小米2 学魅族的造型,小米3s学诺基亚lumia的造型, 一味的堆砌硬件,就想找到一个既能哄人,又能赚钱的最佳赢利点。当小米2出来的时候,我还期望买个小米2,小米2从配置和外观上讲,都是还不错的,我到现在也觉得小米手机里最成功的一款手机就是小米2s,但是小米1s在手里不能扔啊,就想等着小米3出来买个小米3吧,等看到小米3的真容,我了去,奇丑无比,有网友讲,真想拿个斧子把小米3的上下砍去一截,我深有同感,再看那个边框,小米1和小米2,雷军一直标榜他的窄边框,到了小米3就压根不提了。我就觉得雷军你们的硬件技术不过关,既想着怎么搞个高配置,又想着怎么省钱,最后就牺牲在了制造工艺上。小米3终结了我对小米的好感。 我在看了魅族MX3的发布会之后,特别是关于flyme3.0的介绍,我开始留意魅族,到魅族体验店体验了一把,魅族的工艺确实好,但是还不是我想要的那种感觉,就中间那个大M键都让我纠结,还有什么鸡肋的smart bar,一点不习惯,也不喜欢。我想我是不是入俗转向iphone,我去商店看了iPhone5,一方面太窄,太小,另一方面它的系统体验,我自我感觉是受束缚的,还不是我想要的感觉。我的手机梦一直悬着。 后来我司前两天出了荣耀3c,我看了配置看了款式,心动,我觉得这款手机特别适合我的感觉,价格798,我觉得这个手机要大卖。果不其然,两天的预约量就近400万了。我突然发现我又找到手机的追求方向了。虽然我的理想是2G内存,EMUI也不尽我意,不要用联发科的芯片。但是我是公司的一员,我看到了公司做出了我喜欢类型的手机,突然我就对我司的手机有了认同感,之前我可能是个米粉,但是现在我正式宣布,从今之后,我从米粉变成花粉+高级米黑了,关注EMUI,关注荣耀,关注华为手机!。

2014年1月13日 · 1 分钟

使用Ajaxupload.js上传文件

ajaxupload.js 是一款使用jquery上传文件的js插件,对于简单的文件上传,足够可以应付。 该插件主要有以下几个选项: settings = { action: 'upload.php', //要提交的地址 name: 'userfile',//参数名次 data: {},//和文件一起提交的其它参数 autoSubmit: true,//选中文件后是否就提交 responseType: false,//返回的相应格式,如果是text格式的,会在响应前后加上一个<pre></pre>标签 hoverClass: 'hover', disabledClass: 'disabled', onChange: function(file, extension){//在选中了文件的时候触发 }, onSubmit: function(file, extension){//在提交的时候触发 }, onComplete: function(file, response){//上传结束的时候触发 } } 你可以使用非自动提交的方式上传文件。 代码示例如下: var ajaxupload =new AjaxUpload($("#uploadFile_button"),{ action: "upload.action", type:"POST", data:{}, autoSubmit:false, responseType:"json", name:'file', onChange: function(file, ext){ if(ext && (/^(xls)$/.test(ext) )){ alert("只支持xls格式的文件"); } }, onComplete: function(file, resp){ alert("上传成功"); } }); 以上代码绑定了id=uploadFile_button的html元素,只要点击它,就会弹出选择文件的对话框。 当选中了文件,你就可以手动触发它上传文件,当然你也可以在正式提交前设置一些参数。 ajaxupload.setData({id,"1"}); ajaxupload.submit(); 注意:当在chrome浏览器下面,该插件存在一个bug 就是重复选择相同的文件,onChange方法不会触发多次, ajaxupload.js只适合简单的文件上传的场景,并没有显示速度的功能,也无法显示进度。 虽然该插件已经很久不再更新,但是使用简单,也有一些人一直在用。 如果你需要更强大的上传功能,ajaxupload.js可能不太适合你。 ...

2014年1月11日 · 1 分钟

TOMCAT配置HTTPS和SSL并HTTP请求强转为HTTPS请求【绝对有效】

1、生成keystore文件 keytool -v -genkey -alias tomcat -keyalg RSA -keystore /home/test/my.keystore 在生成keystore的过程中,要输入一些站点信息和密码,并要求再次核对密码 2、编辑tomcat/conf/server.xml 找到对应的connector,取消注释,并且写入keystore文件路径和密码 <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/home/test/my.keystore" keystorePass="123456"/> 3、强制HTTP转HTTPS 对工程的web.xml进行修改,加入: <security-constraint> <web-resource-collection> <web-resource-name>OPENSSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> 4、禁用不安全的http方法 在tomcat/conf/web.xml最后加上一个节点 <security-constraint> <web-resource-collection> <url-pattern>/*</url-pattern> <http-method>PUT</http-method> <http-method>DELETE</http-method> <http-method>HEAD</http-method> <http-method>OPTIONS</http-method> <http-method>TRACE</http-method> </web-resource-collection> <auth-constraint></auth-constraint> </security-constraint>

2014年1月8日 · 1 分钟

介绍一款使用html5画图的JS开源软件ichartjs

示例代码如下: <script type="text/javascript" src="ichart.1.2.min.js" ></script> <script> $(function(){ var data = [ {name : 'UC浏览器',value : 40.0,color:'#4572a7'}, {name : 'QQ浏览器',value : 37.1,color:'#aa4643'}, {name : '欧朋浏览器',value : 13.8,color:'#89a54e'}, {name : '百度浏览器',value : 1.6,color:'#80699b'}, {name : '海豚浏览器',value : 1.4,color:'#92a8cd'}, {name : '天天浏览器',value : 1.2,color:'#db843d'}, {name : '其他',value : 4.9,color:'#a47d7c'} ]; var chart = new iChart.Pie3D({ render : 'canvasDiv', data: data, title : { text : '2012年第3季度中国第三方手机浏览器市场份额', color : '#3e576f' }, sub_option : { label : { background_color:null, sign:false,//设置禁用label的小图标 padding:'0 4', border:{ enable:false, color:'#be5985' }, fontsize:11, fontweight:600, color : '#be5985' }, }, offset_angle:-60,//逆时针偏移60度 mutex : true,//只允许一个扇形弹出 showpercent:true, border :false, decimalsnum:2, width : 800, height : 400, radius:150 });chart.draw(); }); <script> 效果如下: ...

2014年1月6日 · 1 分钟

web.xml版本差异的问题

Web.xml文件有2.3、2.4、2.5、3.0版本,其中有一个很重要的配置差异: 在Servlet 2.5 版本中可以这样配置,多个url映射到同一个servlet。具体如下。 <servlet-mapping> <servlet-name>servletName</servlet-name> <url-pattern>/index</url-pattern> <url-pattern>/login</url-pattern> </servlet-mapping> 在2.3或2.4中不能。 Servlet 2.3 <?xml version=“1.0” encoding=“UTF-8”?> <!DOCTYPE web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN” “http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> … </web-app> Servlet 2.4 <?xml version=“1.0” encoding=“UTF-8”?> <web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance" xmlns=“http://java.sun.com/xml/ns/j2ee" xmlns:web=“http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" xsi:schemaLocation=“http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd " version=“2.4”> … </web-app> Servlet 2.5 <?xml version=“1.0” encoding=“UTF-8”?> <web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance" xmlns=“http://java.sun.com/xml/ns/javaee" xmlns:web=“http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id=“WebApp_ID” version=“2.5”> Servlet 3.0 <?xml version=“1.0” encoding=“utf-8”?> <web-app version=“3.0” xmlns=“http://java.sun.com/xml/ns/javaee" xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

2014年1月4日 · 1 分钟

How to fix your entire life in 1 day - Bilingual Edition 如何在一天内修复你的人生 - 双语对照版 Author / 作者: Dan Koe Published / 发布日期: December 23, 2025 Source / 来源: https://letters.thedankoe.com/p/how-to-fix-your-entire-life-in-1 [EN] I’m not here to talk down on you. I’ve quit 10 times more goals than I’ve set. I think that should be the case for most people. But the fact that people try to change their lives and utterly fail almost every time holds true. So much so that it’s a meme for the gym to be crowded during January and return back to normal in February. ...

28 分钟