• --:)欢迎访问锋网源码(:--
  • 首页
  • RSS订阅
  • 常用软件
  • 网页模板
  • 网站运作
  • 锋网学院
  • 智能建站
  • 时代互联
  • 中国红网
  • 中资源!
  • 繁體中文

  • 学院首页
  • 新闻资讯
  • 网站运营
  • 网站开发
  • 美工设计
  • 数据库类
  • 服务器类
  • 网络应用
  • 操作系统
  • 软件教学
编程开发   认证考试   网络安全   文章搜索: 高级搜索
会员登录/控制面版 您的位置: 学院首页 >> 网站开发 >> Ajax教程 >> 文章内容
 

精彩推荐

 
 

本类推荐文章

  • .net Ajax无刷新技术
  • 用AJAX开发智能Web应用程序之..
  • 用AJAX开发智能Web应用程序之..
  • 用PHP和AJAX创建RSS聚合器
  • Ajax开发工具IntelliJ IDEA
 
 

本类阅读排行

  • .net Ajax无刷新技术
  • ASP.NET 2.0实现AJAX的Web开..
  • 技术分析DWR让AJAX如此简单
  • 用AJAX调用SOAP Web服务:构..
  • 用AJAX开发智能Web应用程序之..
  • Ajax技术:构建动态的Java应..
  • 用AJAX开发智能Web应用程序之..
  • 用PHP和AJAX创建RSS聚合器
  • 如何在 Oracle JDeveloper 中..
  • Ajax开发工具IntelliJ IDEA
  • AJAX开发智能Web应用程序
  • AJAX框架简介
  • 开发保留标准浏览器功能的AJ..
  • Ajax与《Ajax基础教程》
  • 详解如何实现最基本的AJAX框..
  • Ajax简要应用说明及技术开发..
  • Ajax 的 Java 对象序列化
  • AJAX+ASP.NET解决网页打开等..
  • Ajax使用初步 (.net)
  • 技术新知:AJAX基础教程
 
 

用AJAX开发智能Web应用程序之高级篇

  • 日期:2006-11-15     人气:     出处:锋网源码     作者:
  • 字体大小:
  • 小
  • 中
  • 大

<PROPERTY NAME="onValue" VALUE="true"/>

<PROPERTY NAME="offValue" VALUE="false" />

然而,属性checked是用两个getter和setter定义的:

<PROPERTY NAME="checked" GET="getChecked" PUT="putChecked" />

因此,我们在<SCRIPT>部分建立了上面两个方法的定义。正如你所见,setter putChecked()-将在每次复选框状态改变时激发-把value属性设置为下面两个变体之一:onValue或OffValue。请注意,putChecked()将不仅可由在复选框-宿主页面中的脚本触发,而且也能通过在checkbox.htc中的相应的任何赋值操作触发。

var _value;

function putChecked( newValue ) {

 value = (newValue?onValue:offValue);

}

function getChecked(){

 return ( _value == onValue);

}

六、为定制标签定义事件

让我们看一下onItemChanging和onItemChanged事件的定义以及这些事件是怎样在value属性的setter内部被激发和处理的(见所附源码中的列表2)。方法putValue()有几个让人感兴趣的地方。首先,在分析CHECKBOX标签期间,可以调用这个方法-只要指定这个HTMLvalue属性。这正解释了为什么我们为非构造对象建立一个单独的逻辑分支-为把构造过程与一个对用户击键的反应区别开来。其次,在此我们展示了定制事件onItemChanging的创建和处理-它允许应用程序取消行为。请注意,通过这种方式,无论是击键还是通过编程方式实现赋值都能达到取消的目的。

事件取消

为了取消事件,一个应用程序应该拦截该事件并且把event.returnValue设置为false。下面的代码片断展示了应用程序是怎样实现取消事件过程的:

cbx_1::onItemChanging() {

. . . . .

if (canNotBeAllowed) {

 event.returnValue=false;

 . . . . .

}

如果事件没被取消,putValue()把内部的普通HTML复选框的checked属性设置为每个相应的当前值-如果它等于onValue,这个内部复选框将被选中;如果它等于offValue(不存在第三种选择),复选框不被选中(完整的列表见本文所附源码中的列表2)。

复选框的HTML内幕

我们控件的绘制是通过助理函数addLabel()和addCheckBox()来实现的并且从一个constructor()内部调用。这些函数把HTML注入进元素的innerHTML。这种注入式HTML的一种简化形式如下所示:

<LABEL for=cb_{uniqueID}>Show Details:</LABEL>

<INPUT id=cb_{uniqueID} type=checkbox />

在此,uniqueID是一个由IE所生成的唯一的(在一个页面内)字符串-它用来识别HTC的实例。

七、 再封装

在我们的CHECKBOX中有一个缺点。按照我们建立它的方式,在constructor()期间被注入的HTML将隶属于宿主该HTC的页面的DOM。而且,全局的JavaScript变量like_value属于它们所在的文档的全局范围。这是危险的,因为我们偶然会遇到命名冲突的可能性:最明显的情形是使用同一个组件的多个实例。另外这还会导致一个可能性-我们的控件可能会偶然地用相同的名称参考其它对象,反之也如此。

为简化起见,需要建立一种专门的机制来为对象授权启动一个真正模块化方法。幸好,HTC技术支持一种智能答案-viewLink。

把一个控件声明为封装的最容易的方法是把一个额外声明放到打开和关闭的PUBLIC:COMPONENT标签之间:

<PUBLIC:DEFAULTS viewLinkContent/>

该控件立即就变成封装性的;而且它有自己的HTML文档树-成为主文档的原子组件。该对象的每个实例有它自己的实例值的集合并且只有公共方法和属性能够从外界代码中加以存取。换句话说,该viewLink机制充分地启动了复杂的Web应用程序的设计和实现-通过使用一种真正的OO的基于组件的方法。

特别地,我们可以简化代码-通过从内部复选框和HTML标签的定义中删除uniqueID后缀,因为我们不再担心命名冲突。因此,我们可以替换下面这一行:

[1] [2] [3] [4]
相关文章
相关软件

  • 网友评论:
  • 查看所有评论
  • 我要发表评论
 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 加入收藏 | 帮助中心 |

Copyright © 2006-2007 fwvv.net  程序支持:木翼  皖ICP备06004916号  

感谢:点击网络 联网科技 天盈信息  提供服务器及带宽赞助