using more javascript syntax inside of angular directive template

在angularjs中,view中避免不了会用一些javascript,你会发现很多标准的javascript语法在html template中无法执行,从而达不到你预期的结果,比如:{{typeof(“A”)}} ,预期输出字符串string;  {{angular.isString(“A”)}},预期输出字符串true,这是因为html template是交由angularjs负责解释和编译的,而在template的对应作用域中,并未去支持所有的标准javascript语法和对象,其中就包括typeof(),但是支持比如”==”,”!==”等一些常用语法。

但是如果想要template支持更多的javascript对象和方法的话,那么就要在template的对应controller的scope中添加引用,比如:在controller中添加scope.angular=angular。那么在template中就可以使用angular.isString(“A”)了。

浅谈javascript继承的设计思想

我一直很难理解Javascript语言的继承机制。

它没有”子类”和”父类”的概念,也没有”类”(class)和”实例”(instance)的区分,全靠一种很奇特的”原型链”(prototype chain)模式,来实现继承。

我花了很多时间,学习这个部分,还做了很多笔记。但是都属于强行记忆,无法从根本上理解。

直到昨天,我读到法国程序员Vjeux的解释,才恍然大悟,完全明白了Javascript为什么这样设计。

下面,我尝试用自己的语言,来解释它的设计思想。彻底说明白prototype对象到底是怎么回事。其实根本就没那么复杂,真相非常简单。

Continue reading “浅谈javascript继承的设计思想”

在BS架构中控制浏览器直接打印

是的,今天的文章标题是《在BS架构中控制浏览器直接打印》,记得之前我说过最近在做1个叫《智慧街区》的项目,里面需要攻克的第2个难点就是,客户端浏览器直接操作打印机的问题。
在BS架构中,有的时候我们需要控制浏览器直接进行打印,而不是弹出打印对话框,使用window.print()在此时就无法满足我们的需求。
我Google了1下,有多种方法,在这之前我就思考过这样1种方法:我们知道xhtml里是可以创建object对象的,比如几年前我们通过object调用Realplay、Windows Media Player播放器,这种object对象,会有2个参数叫codebase和classid,当客户端没有相关activeX插件的时候会通过codebase指定的地址进行下载,而classid是该插件在客户端注册表中的唯一对象标识。下面的代码同样可以操作打印机,这是在网上抄的,仅支持IE哦,因为IE支持ActiveX。

<OBJECT  id=WebBrowser  classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2  height=0  width=0>
</OBJECT>
<input  type=button  value="打印" onclick="document.all.WebBrowser.ExecWB(6,1)">
<input  type=button  value="直接打印"  onclick="document.all.WebBrowser.ExecWB(6,6)">
<input  type=button  value="页面设置" onclick="document.all.WebBrowser.ExecWB(8,1)">

我在实际使用中发现上面的第2个按钮“直接打印”并不起作用,依然弹出对话框。
不过我知道我的思路是正确的,肯定是需要在客户端上安装ActiveX插件,于是google出这样1个插件ScriptX,欣喜。
ScriptX官方网站:http://scriptx.meadroid.com/home.aspx
下载Resource Kit后进行解压安装,在xhtml代码中使用该对象进行操作,便支持直接打印,ScriptX的详细参数见:http://scriptx.meadroid.com/knowledge-bank/technical-reference.aspx
我这里做1些简单的示例:

<object id="factory" codebase="smsx.cab" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814">
</object>
<input  type="button"   value="直接打印"   onclick="factory.printing.print(false)">
<input type="button" value="预览" onclick="factory.printing.preview()" />

OK,本次文章到此结束,其实我不太善于写文章的。

回顾1些在项目管理中遇到的问题和解决方式

从事软件开发很长很长1段时间了,除去在校时光,正式进行社会工作也已经4年光景了。记得最初的时候,我还是使用ASP,那会儿asp还很流行,.net framework1.1才出来不久,那会儿是2003年吧;那会儿你要既会vbscript也要会javascript;那会儿你要既会css也要会html4;那会儿你要既懂vb.net 2003,也要懂c++;总之那会儿,我接触到了很多语言、思想之类的东西。
工作4年了,大小遇到过的项目也有三四十个了吧,由于1直以来,从踏入社会的那1刻就从事项目管理和开发的工作,所以在实践的道路上遇到过很多问题,通常是通过自己翻阅资料,以及寻求互联网帮助来解决,现在也慢慢的喜欢上这种方法。
现在把1些近期项目中遇到的问题记录如下,另外也附带了自己当时的处理方法和思路:
1.信息的不对称和不及时,这个问题是所有问题的根源。打个比方,进入某个迭代的产品测试环节,产品告诉美术根据客户需求,需要将新闻和公告互换位置,美术将更改后的效果图发送至项目经理和产品进行确认,项目经理可能还不知道这样1件事,项目经理、产品、客户确认过后,美术将效果图发送至前端,前端可能还不知所以然,问:“这是什么呀?”,然后美术又需要将修改的地方告诉前端。
这种信息的不对称和不及时,在项目的开发过程中,会浪费很多时间和工作量,我们应该使用1种网络软件管理或电邮等方式,要让所有项目组的人及时清楚,以及明确各自的责任。这个环节我目前使用的是zentao来进行管理。
Continue reading “回顾1些在项目管理中遇到的问题和解决方式”