雪湖小札@blogjava

心情与技术文档同行 http://hi.baidu.com/jingleq

BlogJava 首页 新随笔 联系 聚合 管理
  24 Posts :: 2 Stories :: 4 Comments :: 0 Trackbacks

  javascript的应用,必然导致大量的javascript代码出现在最终的html页面上,带来混乱的逻辑。一个框架性模式在javascript开发中的重要性渐渐浮现。
  我们在使用ajax开发中,常常做这样一件事情:在一个标签容器中加载一些特定内容。这些内容是什么呢?无非只有两种东西:数据与页面样式。
  jquery.jq.mvc处理的就是这种情况。在应用jquery.jq.mvc框架之后,我们做到了把数据显示样式与数据本身分离开来。做业务的去关心数据去吧,做页面的关心数据显示去把,大家共同关心的就是xml定义出的数据了。
  一个完整的应用中包括三部份的内容:工作页面,xml数据文件和标签容器中显示的内容页面。
  Jquery.jq.mvc插件下载/Files/csnowfox/jquery.jq.mvc.rar
  jquery.jq.mvc插件演示下载/Files/csnowfox/jquery.jq.mvc.example.rar
  下面展示如何通过jquery.jq.mvc来工作。在这里,我们使用到了上一章节中定义的jquery.jq.databinding插件。加入以下文件便能看到效果。

  工作页面(首页面,在其中整合配置xml数据文件与标签容器中显示的内容页面,xml文件我们使用了静态文件来方便举例)-- jq.form.htm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//ZH-CN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    
<head>
        
<title>HelloWorld</title>
        
        
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        
<script src="lib/jquery/jquery.jq.js" type="text/javascript"></script>
        
<script src="lib/jquery/jquery.block.js" type="text/javascript"></script>
        
<script src="lib/jquery/jquery.jq.mvc.js" type="text/javascript"></script>
        
<script src="lib/jquery/jquery.jq.form.js" type="text/javascript"></script>
        
<script src="lib/jquery/jquery.jq.databinding.js" type="text/javascript"></script>
        
<script type="text/javascript">
        
        
<!-- 数据处理逻辑 -->
        
var userMap = {"0001":"","0002":"","0003":"保密"}
        
function changeName(val) {
            
return userMap[val];
        }

        
        $(
function (){
            
            $.blockUI($(
"#domMessage"));
            $(
"#ajForm").formController("#content","index.htm",
                
function(dataMap) {
                    
//--- 定义数据绑定 ---    
                    $("#ta").bindingItemsData(dataMap,function(l,it){                    
                        $(it).hover(
function(){
                            $(it).addClass(
"blue");
                        }
,function(){
                            $(it).removeClass(
"blue");
                        }
)
                    }
);
                    $.unblockUI();
                }
,
                
function(formArray, jqForm) {
                    $.unblockUI();
                    $.blockUI(
"Just a moment");
                }
,
                
function(){
                    alert(
"error");
                    $.unblockUI();
                }

            );
            
            $(
"#cansel").click(function () {
                $.unblockUI();
            }
);
        }
)    
        
</script>
        
<style type="text/css" media="screen">
            .blue 
{ color: blue; }
        
</style>
    
</head>
    
<body>
        
<div id="head">
            
<h1>Jquery-JingleQ</h1>
        
</div>
        
<hr/>
        
<div id="content">div容器</div>
        
<div id="domMessage" style="display:none;"> 
            
<h1>请登陆</h1>
            
<form name="ajForm" action="index.xml" method="post">
                
<p>name:<input type="text" name="name"/></p>
                
<p>password:<input type="password" name="password"/></p>
                
<p><input type="submit" value="submit"/><input id="cansel" type="button" value="cansel"/></p>
            
</form>
        
</div>
    
</body>
</html>

  xml数据文件(可以通过程序生成)--index.xml
<?xml version="1.0" encoding="utf-8"?>
<datas>
    
<item>
        
<property name="name">李四</property>
        
<property name="sex">0001</property>
        
<property name="number">123456</property>
    
</item>
    
<item>
        
<property name="name">张三</property>
        
<property name="sex">0003</property>
        
<property name="number">654321</property>
    
</item>
    
<item>
        
<property name="name">王二</property>
        
<property name="sex">0002</property>
        
<property name="number">654321</property>
    
</item>
</datas>

  标签容器中显示的内容页面(也是一个htm页面)--index.htm
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//ZH-CN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    
<head>
        
<title>HelloWorld</title>
        
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
</head>
    
<body>
        
<div id="conent" style="{font-size: 12pt}">
            
<table border="0" cellspacing="5" cellpadding="5" id="ta">
                
<tbody>
                
<!-- 定制menu是为了使标题和下面的列表可以有不一样的样式布局 -->
                
<tr id="menu">
                    
<td>用户名</td>
                    
<td>姓名</td>
                    
<td>员工号</td>
                
</tr>
                
<!-- 用于数据绑定 -->
                
<tr id="def">
                    
<td bindingData="name"></td>
                    
<td bindingData="sex" bindingPattern="[function] changeName({0})"></td>
                    
<td bindingData="number"></td>
                
</tr>
                
<!-- 下面是其它的布局辅助绑定数据后依然位于表格底部 -->
                
<tr>
                    
<td colspan="2">&nbsp;--- 分页 ---</td>
                
</tr>
                
</tbody>
            
</table>
        
</div>
    
</body>
</html>
posted on 2007-06-15 15:03 csnowfox 阅读(1099) 评论(1)  编辑  收藏

Feedback

# re: 征服javascript(七)-Jquery插件jquery.jq.mvc发布 2007-06-26 18:20 NetFetch
玩jQuery有一段时间,看起来你这是一个有意思的东西  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: