ajax php 观察者模式,JavaScript观察者模式定义和dom事件实例详解

观察者模式(发布-订阅模式):其定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。

在JavaScript中,一般使用事件模型来替代传统的观察者模式。

好处:

(1)可广泛应用于异步编程中,是一种替代传递回调函数的方案。

(2)可取代对象之间硬编码的通知机制,一个对象不用再显示地调用另外一个对象的某个接口。两对象轻松解耦。

DOM事件–观察者模式典例

需要监控用户点击document.body的动作,但是我们没有办法预知用户将在什么时间点击。

所以,我们订阅document.body上的click事件,当body节点被点击时,body节点便向订阅者发布这个消息!

document.body.addEventListener("click", function() {

console.log(1);

}, false);

// 可以多个订阅者

document.body.addEventListener("click", function() {

console.log(2);

}, false);

doucment.body.click();

某网站有header头部、nav导航、消息列表等模块。这几个模块的渲染都需要获取用户登陆信息。

(1)一般写法:

$.ajax({

url: './login',

type: 'post',

contentType: 'application/json',

dataType:'json',

success: function(data) {

if(data.status === "success") {

// 登录成功,渲染header、nav

header.setInfo(data.headerInfo);

nav.setInfo(data.navInfo);

}

}

});

(2)使用观察者模式,很轻松解耦!

$.ajax({

...,

success: function(data) {

if(data.status === "success") {

// 登录成功,发布登陆成功消息

login.trigger("loginsuccess", data);

}

}

});

var header = (function() {

// 监听消息

login.listen("loginsuccess", function(data){

header.setInfo(data.headerInfo);

});

return {

setInfo: function(data) {

console.log("设置header信息");

}

};

})();

var nav = (function() {

login.listen("loginsuccess", function(data){

nav.setInfo(data.navInfo);

});

return {

setInfo: function(data) {

console.log("设置nav信息");

}

}

})();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中代码段的标志是什么车_请问这段Python代码是什么意思?

ord(p) - ord(a)这个意思是以 a 为序号0,计算字符p的序号。在ASCII字符集中,小写字母a-z是连续排列的,因此如果a是0的话,那么b就是1,c就是2……以此类推。ord(p) - ord(a) 3前面一段我们解释过了,那么这一…

servlet和jsp页面过滤器Filter的作用及配置

刚刚有个朋友问我,Servlet的过滤器有什么作用? 现在发个帖子说明一下, 过滤器是一个对象,可以传输请求或修改响应。它可以在请求到达Servlet/JSP之前对其进行预处理,而且能够在响应离开Servlet /JSP之后对其…

tar命令速查

tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要…

附005.Docker Compose文件详解

一 Docker Compose文件简介 compose文件使用yml格式,主要分为了四个区域:version:用于指定当前docker-compose.yml语法遵循哪个版本services:服务,在它下面可以定义应用需要的一些服务,每个服务都有自己的名…

如何使用TensorFlow构建简单的图像识别系统(第2部分)

by Wolfgang Beyer沃尔夫冈拜尔(Wolfgang Beyer) 如何使用TensorFlow构建简单的图像识别系统(第2部分) (How to Build a Simple Image Recognition System with TensorFlow (Part 2)) This is the second part of my introduction to building an image recognition system wi…

网站 服务器 用sqlite,sqlite服务器数据库

sqlite服务器数据库 内容精选换一换简要介绍SQLite是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,不仅支持标准的SQL语法,还遵循了数据库的ACID事务。编写语言:C一句话概述:轻量级的关系型数…

type-c接口图片_TypeC接口除了充电还能干吗?这些功能都不知道,简直是在浪费...

Type C手机接口相信每个使用智能手机的朋友都很熟悉,目前已经广泛使用在智能手机领域,并且得到用户一致好评。但是对于Type C接口真正的用处很少有人知道,大部分用户只了解正反面都可充电,其他方面一概不知,对于这一点…

Zookeeper的api的简单使用(转载)

转载自: http://www.cnblogs.com/sunddenly/p/4031881.html 1.API 2.API 示例 ZooKeeper中的组成员关系 理解ZooKeeper的一种方法就是将其看作一个具有高可用性的文件系统。但这个文件系统中没有文件和目录,而是统一使用“节点”(node)的概念,称为znode…

必须使用301重定向的运用场景

必须使用301重定向的运用场景

1.1好素数

题目 题意:一个好素数的定义是,他是一个素数,然后他的左右两边10区间内存在素数,那么他就是好素数,现在让你输入一个数字,这个数字以内的好素数的数量。 解题方法:先把每一个数字是不是素数判断…

jquery.vue.js_一个Vue.js简介,面向只了解jQuery的人

jquery.vue.jsby Matt Rothenberg马特罗森伯格(Matt Rothenberg) 一个Vue.js简介,面向只了解jQuery的人 (A Vue.js introduction for people who know just enough jQuery to get by) I’ve had a love-hate relationship with JavaScript for years.我与JavaScrip…

python 矩阵获取行数_4个最佳项目创意的代码片段和示例,旨在为Python和机器学习构建出色的简历!...

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达一篇文章带你了解4个最佳项目创意的代码片段和示例Python是一种特殊的编程语言,适用于从初学者到中级用户。由于它的灵活性,它正逐渐成为一种非常流…

Android 多状态加载布局的开发 Tips

2019独角兽企业重金招聘Python工程师标准>>> 什么是多状态 Layout 对于大多数 App 而言,项目中都有多状态加载 View 这种需求,如下图所示。 对应到开发中,我们通常会开发一个对应的自定义 layout 用于根据页面不同的状态来显示不同…

XML解析之JAXP案例详解

根据一个CRUD的案例&#xff0c;对JAXP解析xml技术&#xff0c;进行详细的解释&#xff1a; 首先&#xff0c;已知一个xml文件中的数据如下&#xff1a; <?xml version"1.0" encoding"UTF-8" standalone"no"?> <书架><书 出版社…

随机梯度下降

1.SGD 代价函数通常可以分解成每个样本的代价函数的总和转载于:https://www.cnblogs.com/bigcome/p/10042800.html

iis mysql5.7_手动配置网站环境 IIS 10+PHP 7.1+MySQL 5.7

之前配置环境一直用的一键安装包&#xff0c;不管是phpStudy还是lnmp&#xff0c;昨天尝试在自己电脑配置一下iis的环境&#xff0c;也踩了一些坑&#xff0c;整理了一下。测试电脑是Windows10&#xff0c;理论上Win7和IIS7.5都支持的。安装 IIS1&#xff1a;控制面板 > 程序…

如何使用Apache的Prediction IO Machine Learning Server构建推荐引擎

by Vaghawan Ojha通过瓦哈万欧哈(Vaghawan Ojha) 如何使用Apache的Prediction IO Machine Learning Server构建推荐引擎 (How to build a recommendation engine using Apache’s Prediction IO Machine Learning Server) This post will guide you through installing Apache…

JavaScript DOM编程艺术第二版学习(1/4)

接下来项目需要网页相关知识&#xff0c;故在大牛的指引下前来阅读本书。 记录方式&#xff1a;本书分四部分阅读&#xff0c;完成阅读之后会多写一篇包括思维导图的算是阅读指南的东西&#xff0c;浏览的童鞋看着指南可以跳过一些不必要的坑~ 当前水平&#xff1a;HTML&CS…

github开源大项目_GitHub刚刚发布了一份大规模的开源指南

github开源大项目Here are three links worth your time:这是三个值得您花费时间的链接&#xff1a; GitHub just released a massive guide to contributing to open source (5 to 60 minute read) GitHub刚刚发布了一份有关开源的大型指南( 阅读5至60分钟 ) A new way to br…

mysql中where条件判断语句_MySQL Where 条件语句介绍和运算符小结

WHERE 条件有时候操作数据库时&#xff0c;只操作一些有条件限制的数据&#xff0c;这时可以在SQL语句中添加WHERE子句来规定数据操作的条件。语法&#xff1a;SELECT column,… FROM tb_name WHERE definitionWHERE 关键字后面接有效的表达式(definition)&#xff0c;该表达式…