Archives

文件夹

本文章所提到的书为《AngularJs权威教程》 Ari Lerner著   绑定策略涉及到4个方式,分别为:“@”,=”,“&” 书中对于绑定策略的描述:   本地作用域属性:使用@符号将本地作用域同DOM属性的值进行绑定。指令内部作用域可以使用外部作用域变量。 @(or @attr)   双向绑定:通过=可以将本地作用域上的属性同父级作用域上的属性进行双向的数据绑定。就想普通的数据绑定一样,本地属性会反映出父数据模型中所发生的改变。 =(or =attr)   父级作用域绑定:通过&符号可以对父级作用域进行绑定,以便在其中运行函数。意味着对这个值进行设置时会生成一个指向父级作用域的包装函数。 要使调用带有一个参数的父方法,我们需要传递一个对象,这个对象的键是参数的名称,值是要传递给参数的内容。 &(or &attr)   因为书里面的描述比较简单,这里做一些补充说明: 从传递的内容来说 @ 传递过来的是一个字符串 = 传递过来的是一个字符串或对象 & 这里一定不要认为&传递的是一个函数,实际上父级作用域绑定传递的是一个函数的描述,通过该描述和父级作用域的函数建立联系然后执行。   简单的例子,一个有参函数的定义(无参函数比较容易理解这里就不做说明了): //指令HTML部分 <plug-in callback=”fun(value)”><plug-in> <script type=”text/javascript”> //对绑定的方法进行设计 app.run([‘$rootScope’,function($rootScope){ $rootScope.fun = function(value){ console.log(value); } }]); //指令的设计 app.directive(‘plugIn’,[function(){ return{ replace:true, scope:{callback:”&”}, template:'<div class=”demo”></div>’, restrict: “EA”, link:function($scope){ //执行绑定的方法 $scope.callback({value:1,data:2}); […]

说到这个东西,肯定是碰到了这个需求。 直接上文档: 苹果官方文档地址 文档里面有一段注意: To prevent unsolicited downloads over cellular networks at the user’s expense, embedded media cannot be played automatically in Safari on iOS—the user always initiates playback. A controller is automatically supplied on iPhone or iPod touch once playback in initiated, but for iPad you must either set the controls attribute or provide […]

lucky-select https://github.com/gaofeiyu/lucky-select.git 移动端的select解决方案,可级联(现在只有二级联动)。 组件参考自新浪的微招聘,致敬! 基本指令说明 单级指令 singleSelectorPopup 二级联动指令 doubleSelectorPopup 上面两个指令主要是生成下拉部分 参数 //初始化的值 title 标题 initData 初始化的值 data 下拉数据 getRightListData 二级联动通过该属性的方法过滤生成二级菜单,单级联动不存在该属性 这里的data为数组,包含两个必要键值 {id:1,name:”id对应的展示名称”} 方法 show(val) val为初始化的对象 hide() 隐藏 onConfirm() 确认 onCancel() 取消 selector单级指令 该指令是在singleSelectorPopup基础上封装的选择的部分,供使用者参考。 scope: {value: “=”, options: “=”, name: “@”, readonly:”@”, index:”=”}, template: “<span class=’selector’ ng-click=’showPopup();’>{{str}}</span>”, restrict: “EA”, 参数说明 value 显示在前台的值 options 下拉的数据 name 下拉标题 […]

原文来自SteamCN 说明 此汉化补丁只用于steam版和破解的英文版(不适用于中文版) 原因(因为中文版修改了exe文件,才导致了bug和盒子) 11月17号更新完美汉化补丁(使用方法) 11月19号更新360手柄补丁(使用方法) 优点 人物死后不会变盒子 血液不会被和҉谐 没有bug跳出问题 有的地方不会缺语音 不用替换exe文件 不用替换C盘ini文件 可以使用360手柄 缺点 每次进入游戏最少1~2分钟——最多3~4分钟(载入地图不会出现此情况)   感谢@SunZz测试   汉化补丁使用方法   第一步 验证游戏完整性(打过之前的汉化补丁)   删除C:\Documents and Settings\Administrator\Application Data\Bioshock里的Bioshock.ini   删除Bioshock\Content\BinkMovies里的2klogo和vidlogo(可以不删)   修改Bioshock\Content\Maps里所有的xxxx_int.bsm为xxxx_chn.bsm   第二步 覆盖汉化补丁即可享受无盒子中文版 360手柄补丁使用方法 第一步 删除C:\Documents and Settings\Administrator\Application Data\Bioshock里的Bioshock.ini (这里如果进不去需要获取管理员控制权)   第二步 覆盖360手柄补丁(需要先完成汉化补丁的步骤) 进入游戏后 调整分辨率和字幕等 然后自定义——使用360手柄——是 (定义了手柄,没找到方法弄回去)   缺点(因为加入了主机的汉化补丁) 载入地图的界面有点花(字还是看得清的) 没有退出游戏选项 汉化补丁 360手柄补丁 […]

今天终于写个接近最终版的脚本,简单总结一下思路。 先确定我都要干什么,总结如下: 【cssmin】压缩css 【uglify】压缩js 【cssmin】合并css到style.css 【uglify】合并js库/框架文件到lib.js 【uglify】合并自定义js到script.js 【copy】复制需要处理的html到目标地点(单页面项目只涉及到一个文件) 【usemin】然后处理目标文件 【filerev】处理目标文件版本号问题(对合并后的制定文件,现在只写了js和css)   弄清思路后一步步操作,这个脚本总算是正常工作了。   和一些说明有所不同的是,我这里没有用concat、jshint、clean。 concat是被cssmin和uglify的功能替代掉了,不写也可以合并。 jshint没用主要是因为对自己代码不是特别有自信,用了以后感觉要花好多时间调试… clean是真心用不上。   参考文章: http://ericnishio.com/blog/compile-less-files-with-grunt http://www.xuanfengge.com/npm-installation-did-not-succeed-and-github-will-not-open-solutions.html https://www.npmjs.org/package/grunt-html-build https://www.npmjs.org/package/grunt-contrib-concat https://www.npmjs.org/package/grunt-contrib-less https://www.npmjs.org/package/grunt-contrib-watch  

grunt-usemin的作用 usemin用来生成优化后(合并,压缩)的脚本,然后以此替换html文件里面的javascript, css和其他脚本的引用 使用方式 npm install grunt-usemin –save-dev 任务 usemin通过两个内置的任务来完成上述的功能,分别是useminPrepare和usemin,同时还需要其它一些优化工具(cssmin,concat等)来完成优化工作。usemin通过动态的为这些优化工具插件生成子任务的方式来实现整个的目标。 usemin的两个内置的任务 useminPrepare 准备配置文件。配置文件是根据结构化的文件(如html)里面的块声明来生成的。最终把这些应用替换成优化后的文件引用。在这个过程中,为每个优化的步骤生成了很多的名为generated的子任务,这些优化的步骤每步都是一个grunt插件,下面将会列举出来。 usemin 把结构化文件(html)的块声明里面的文件引用替换。如果那些脚本文件有打过版本声明的,将会用版本声明的文件应用来替换。这个个过程会直接修改结构化文件(如html)的内容。 你必须手动的install和load构建过程中需要的依赖插件 基本例子: grunt.registerTask(‘build’, [ ‘useminPrepare’, ‘concat:generated’, ‘cssmin:generated’, ‘uglify:generated’, ‘filerev’, ‘usemin’ ]); useminPrepare任务 useminPrepare 在之前配置基础上,生成新的配置文件,在这个新的配置文件里定义了文件整个处理过程。默认情况下js文件会做concat,uglify处理,css文件会做concat,cssmin处理。 结构化文件(html)的块声明 <!– build:<type>(alternate search path) <path> –> … HTML Markup, list of script / link tags. <!– endbuild –> type 文件类型 可以是css,js,或者其他自定义类型(后面会讲到)。如果都不是构建脚本会忽略。这个引用块只会在开发环境出现,最后的build成功后不会出现。 alternate search path (可选的)默认情况下那些脚本文件的查找都是相对当前处理的文件的。 path 优化后文件的输出目录。 <!– build:js js/app.js –> <script […]

我先说问题,代码下面一起给出 添加patch 前两天了解到除了get、post、put还有一个叫patch的相对较新的提交方法,主要是用来做局部更新的意思。 但是angular没有这个方法。 改变请求的格式 angular在提交中文内容是会有乱码出现的情况,编码解码也不行,如果用过zepto的同学可能也遇到过这样的问题。结果导致无法提交服务端想要的信息。 增加请求拦截 对于请求的成功和失败进行拦截操作,比如对401做跳转登录页面的操作。 下面是代码 .config([‘$httpProvider’, function ($httpProvider) { $httpProvider.defaults.headers.post[‘Content-Type’] = ‘application/x-www-form-urlencoded;charset=utf-8’; //增加拦截服务 $httpProvider.interceptors.push(‘userStateInterceptor’); //增加patch请求方法 $httpProvider.defaults.headers.patch = { ‘Content-Type’: ‘application/x-www-form-urlencoded;charset=utf-8’ } /** * The workhorse; converts an object to x-www-form-urlencoded serialization. * @param {Object} obj * @return {String} */ var param = function (obj) { var query = ”, name, value, […]

书上对事件的描述并不多,但实践中却是比较好用的东西。 先粘一下概念和API:   如同浏览器响应浏览器层的事件,比如鼠标点击、页面滚动那样,Angular应用也可以响应Angular事件。这使我们可以在应用中嵌套的各组件之间进行通信,即使这些组件在创建时并未考虑到其他组件。   注意:Angular事件系统并不与浏览器的事件系统相通,这意味着,我们只能在作用域上监听Angular事件而不是DOM事件。   $emit只能向parent controller传递event与data $broadcast只能向child controller传递event与data $on用于接收event与data   事件属性 目的 event.targetScope 发出或者传播原始事件的作用域 event.currentScope 目前正在处理的事件的作用域 event.name 事件名称 event.stopPropagation() 一个防止事件进一步传播(冒泡/捕获)的函数(这只适用于使用`$emit`发出的事件) event.preventDefault() 这个方法实际上不会做什么事,但是会设置`defaultPrevented`为true。直到事件监听器的实现者采取行动之前它才会检查`defaultPrevented`的值。 event.defaultPrevented  

之前都不怎么接触图表类的制作任务,也不是很关心,最近偶然机会有了接触,在这里记录一下。 可能大多数人接触比较多的是百度的ECharts,但是我没有从ECharts入手 最先接触的是d3.js. 展示数据的类型很多,但是不支持ie8,暂时放到了一边; 之后看了HighCharts 这个图表库支持ie8,效果也很好,功能上少d3很多,但是够用了,所以我在项目中暂时引用了HighCharts来构建图表。 回过来说百度的ECharts ECharts本身是不支持ie8的,需要引入excanvas来达到支持,功能也很强大,符合国人需求,个人感觉跟HCharts的功能差不多,只是实现方式不同。   因为没有测试大数据,所以这部分先保留,不做评价。 然而三种图表主要都是两种技术(其实图标库基本都是这两种),SVG和Canvas,当然了,百度这边ie8的支持是通过转为div来实现的。 关于效率问题,引用一篇w3school上面的一篇文章   Canvas 和 SVG 都允许您在浏览器中创建图形,但是它们在根本上是不同的。 SVG SVG 是一种使用 XML 描述 2D 图形的语言。 SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。 在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。 Canvas Canvas 通过 JavaScript 来绘制 2D 图形。 Canvas 是逐像素进行渲染的。 在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。 Canvas 与 SVG 的比较 下表列出了 canvas […]