当前位置 : 主页 > 网页制作 > Dojo >

dojo中pub/sub框架

来源:互联网 收集:自由互联 发布时间:2021-06-15
对于已经创建的对象(DOM节点,某个小部件[widget],或是某个特效对象),我们可以将事件处理器绑定在其上,并以其作为事件发布者。但如果我们不知道要绑定的对象是否已经被创建

对于已经创建的对象(DOM节点,某个小部件[widget],或是某个特效对象),我们可以将事件处理器绑定在其上,并以其作为事件发布者。但如果我们不知道要绑定的对象是否已经被创建时,我们就会需要用到Dojo的publish和subscribe(pub/sub)框架了。pub/sub使我们可以将某个处理器注册(或称之为“订阅”[subscribe])到某个“主题”(一个具有多个事件触发源的事件的特定名称,可用字符串表示),我们所注册的处理器将在该绑定“主题”被发布时被触发调用。

假设我们正在开发某一个应用,其中需要创建一些按钮来告知用户相应的行为。我们既不想重复的写这一通知程序,也不希望通过在按钮中写入内嵌对象来实现事件注册。那么最好的方法就是使用pub/sub:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<title>测试用例</title>
	<style type="text/css">
		@import "dojo/dojo/resources/dojo.css";
		@import "dojo/dijit/themes/tundra/tundra.css";
		*{margin:0;padding:0;font-size:11pt;font-family:微软雅黑;}
		button{width:200px;height:30px;}
	</style>
	<script type="text/javascript" djConfig=" isDebug: false" src="dojo/dojo/dojo.js"></script>
</head>
  <script type="text/javascript">
      	require(["dojo","dojo/topic","dojo/dom","dojo/domReady!"],function(dojo,topic,dom)
		{
			var $createBtn=dom.byId("createButton");
			dojo.connect($createBtn,"onclick",function(evt)
			{
				var $subBtn=dojo.create("button",{innerHTML:"subButton"},$createBtn,"after");  //当点击$create
				dojo.connect($subBtn,"onclick",function(evt)
				{
					topic.publish("show","click me!");
				});
			});
			topic.subscribe("show",function(text)
			{
				alert(text);
			});
		});
    </script>  
<body class="tundra">
	    <button id="createButton">click</button>  
</body>
</html>
上一篇:dojo资源
下一篇:dojo单柱状图
网友评论