如何实现VM框架中的数据绑定
作者:佳杰
本文原创,转载请注明作者及出处
如何实现VM框架中的数据绑定
一:数据绑定概述
视图(view)和数据(model)之间的绑定
二:数据绑定目的
不用手动调用方法渲染视图,提高开发效率;统一处理数据,便于维护
三:数据绑定中的元素
视图(view):说白了就是html中dom元素的展示
数据(model):用于保存数据的引用类型
四:数据绑定分类
view > model的数据绑定:view改变,导致model改变
model > view的数据绑定:model改变,导致view改变
五:数据绑定实现方法
view > model的数据绑定实现方法修改dom元素(input,textarea,select)的数据,导致model产生变化,只要给dom元素绑定change事件,触发事件的时候修改model即可,不细讲model > view的数据绑定实现方法1.发布订阅模式(backbone.js用到);2.数据劫持(vue.js用到);3.脏值检查(angular.js用到);
六:model > view数据绑定demo讲解 (如何实现数据改变,导致UI界面重新渲染)
简易思路
> 1.通过defineProperty来监控model中的所有属性(对每一个属性都监控)
> 2.编译template生成DOM树,同时绑定dom节点和model(例如<div id="{{model.name}}"></div>),defineProperty中已经给“model.name”绑定了对应的function,一旦model.name改变,该funciton就操作上面这个dom节点,改变view主要js模块:Observer,Compile,ViewModel1.Observer用到了发布订阅模式和数据监控,defineProperty用于“监控model", dom元素执行"订阅"操作,给model中的属性绑定function;model中属性变化的时候,执行"发布"这个操作,执行之前绑定的那个function源码如下:var Observer = function(opts) {this.id = (opts && opts.id) ? opts.id : +new Date();this.opts = opts;this.subs = []; //观察者数组/*this.subs包含了所有观察者,每个观察者的结构如下:{key:"person.age.range",//这个key代表model.person.age.range这个属性/*和key绑定的函数数组,每个函数操作一个dom节点,一个key对应多个dom节点,所以actionList是个function数组;*/actionList:[function(){},function(){}]}*/}Observer.prototype = {//遍历model中所有的属性,每个属性用defineKey来监控所有属性monit: function(data, baseUrl) {var me = this;baseUrl = baseUrl || "";var isTypeMatch = (data && typeof data === "object");if (isTypeMatch) {Object.keys(data).forEach(function(key) {var base = baseUrl ? (baseUrl + "." + key) : key;me.defineKey(data, key, data[key], baseUrl); //定义自己me.monit(data[key], base); //递归【定义的是下一层】});}},//用到了Object.defineProperty来定义属性,这样属性改变的时候,就会自动执行里面的set方法defineKey: function(data, key, val, baseUrl) {var me = this;var base = baseUrl ? (baseUrl + "." + key) : key;Object.defineProperty(data, key, {enumerable: true,configurable: false,get: function() {return val;},//更新并监控新的值,执行publish函数set: function(newVal) {if (newVal !== val) {val = newVal;//设置新值需要重新监控me.monit(newVal, base); //(baseUrl+"."+key)作为观察者模式中的监听的那个key,也可以说是监听的那个事件me.publish(base, newVal); }}});},/*根据key来执行绑定在这个key上的所有函数,比如说person.age.range这个key,它变动的时候,publish会执行绑定在person.age.range这个key上所有的function*/publish: function(key, newVal) {(this.subs || []).forEach(function(sub) {if (sub.key == key) {(sub.actionList || []).forEach(function(action) {action(newVal);});}});},//给model中的某个key(例如person.age.range)添加绑定的function subscribe: function(key, callback) {var tgIdx;var hasExist = this.subs.some(function(unit, idx) {tgIdx = (unit.key === key) ? idx : -1;return (unit.key === key)});if (hasExist) {if (Object.prototype.toString.call(this.subs[tgIdx].actionList)=="[object Array]"){this.subs[tgIdx].actionList.push(callback);} else {this.subs[tgIdx].actionList = [callback];}} else {this.subs.push({key: key,actionList: [callback]});}},//取消订阅remove: function(key) {var removeIdx;this.subs.forEach(function(sub, idx) {removeIdx = sub.key === key ? idx : -1;return sub.key === key});if (removeIdx !== -1) {this.subs.splice(removeIdx, 1);}},isObject: function(data) {return data && typeof data === "object"}};2.Compile: 模板编译器var Compile = function(opts) {this.opts = opts;this.data = this.opts.data;this.observer = this.opts.observer;this.regExp = /\{\{([\s\S]*)\}\}/;this.ele = document.createElement("div");this.ele.innerHTML = opts.template; //渲染页面this.fragment = this.transToFrament(this.ele);this.travelAllNodes(this.fragment);this.ele.appendChild(this.fragment);};Compile.prototype = {//把页面上的dom节点转化成文档碎片,防止dom频繁操作影响页面性能transToFrament: function(el) {var fragment = document.createDocumentFragment(),child;// 将原生节点拷贝到fragmentwhile (child = el.firstChild) {fragment.appendChild(child);}return fragment;},//遍历文档碎片节点下所有的node节点(用到了函数递归调用),执行compileNodetravelAllNodes: function(ele) {this.compileNode(ele);([].slice.call(ele.childNodes) || []).forEach(function(node) {this.compileNode(node);if (node.childNodes && node.childNodes.length) {this.travelAllNodes(node);}}.bind(this));},/*包含功能1.渲染node节点2.给key设置callback函数,函数内操作node节点*/compileNode: function(node) {if (this.isElement(node)) {this.compileElementNode(node);} else if (this.isText(node)) {this.compileTextNode(node);}},/*编译element类型的node节点,需要处理属性绑定v-bind="{{data.name}}"和事件v-event="{{data.event}}"*/compileElementNode: function(node) {var me = this,nodeAttrs = node.attributes;[].slice.call(nodeAttrs).forEach(function(attr) {var attrName = attr.name;var attrValue = attr.value;var key = me.getKey(attrValue);me.bindKeyToNode(key, attr);attr.value = me.compileString(attrValue); //渲染node});},//编译文本类型的node节点,里面放了对应的"{{data.name}}"这种数据格式compileTextNode: function(ele) {var key = this.getKey(ele.textContent);this.bindKeyToNode(key, ele);ele.textContent = this.compileString(ele.textContent);},//解析“{{}}”,把它变成对应的数据值compileString: function(str) {var key = this.getKey(str);return str.replace(this.regExp, this.getValueByKey(key));},//绑定key和node节点,key一旦改变,就会触发对应的函数,修改node节点bindKeyToNode: function(key, node) {if (!!key.trim()) {console.log(key);var nodeType = node.nodeType;var regExp = new RegExp("\\{\\{" + key + "\\}\\}");var originTextConetnt;if (nodeType === 2) {originTextConetnt = node.value;} else if (nodeType === 3) {originTextConetnt = node.textContent;}this.observer.subscribe(key, function(newVal) {var tgValue = originTextConetnt.replace(regExp, newVal);if (nodeType === 2) {node.value = tgValue;} else if (nodeType === 3) {node.textContent = tgValue;}});}},//从{{name.age.sex}}中获取name.age.sexgetKey: function(str) {return str.match(this.regExp) ? str.match(this.regExp)[1] : "";},//获取key对应的value值getValueByKey: function(key) {var arr = key ? key.split(".") : [];var temp = this.data;for (var i = 0; i < arr.length; i++) {if (temp) {temp = temp[arr[i]];} else {temp = undefined;break}}return temp;},isElement: function(ele) {return ele.nodeType === 1 ? true : false;},isText: function(ele) {return ele.nodeType === 3 ? true : false;},getElement: function() {return this.ele;}}3.ViewModel:结合Observer与Compile,实现model > view的数据单向绑定var ViewModel = function(opts) {this.opts = opts;this.data = opts.data;this.wrapper = opts.wrapper;this.template = opts.template;this.Observer = (typeof Observer != undefined) ? Observer : opts.Observer;this.Compile = (typeof Compile != undefined) ? Compile : opts.Compile;this.init();}ViewModel.prototype = {init: function() {var opts = this.opts;this.observer = new this.Observer(opts);this.observer.monit(this.data); //监控数据变化,数据已经改变了this.compiler = new this.Compile(Object.assign(opts, {observer: this.observer})); //编译生成节点if (this.wrapper) {this.wrapper.appendChild(this.compiler.getElement());}},get: function() {return this.compiler.getElement();}};
总结
简单地调用new ViewModel({data:data,template:template}),完成了model和view的绑定,
ViewModel内部大致执行顺序是:1. 创建数据监控对象this.observer,该对象监控data(监控以后,data的属性改变,就会执行defineProperty中的set函数,set函数里面添加了publish发布函数)2. 创建模板编译器对象this.compiler,该对象编译template,生成最终的dom树,并且给每个需要绑定数据的dom节点添加了subscribe订阅函数3. 最后,改变data里面的属性,会自动触发defineProperty中的set函数,set函数调用publish函数,publish会根据key的名称,找到对应的需要执行的函数列表,依次执行所有函数
Git地址
https://github.com/devil1989/databind/
demo
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><link rel="stylesheet" type="text/css" href="demo.css"><script type="text/javascript" src="./observe.js"></script></head><body><template id="inner" type="text/template"><div title="{{des}}"><div><ul id="list"><li ><span >age:</span><input type="text" name="" value="{{age}}" ><span id="age" style="float: left;">+</span></li><li><span>name:</span><input id="firstName" type="text" name="" value="{{name}}"></li><li><span>{{name}}</span></li></ul></div></div></template><script type="text/javascript">(function(){window.data={name:"jeffrey",age:28,des:"测试"};var vm=new VM({data:data,template:document.getElementById("inner").innerHTML/* wrapper:document.body//可以指定对应容器,也可以不指定容器,直接获取元素,再手动插入对应dom元素*/});document.body.appendChild(vm.get());document.getElementById("age").addEventListener("click",function(){data.age++;//只需要修改属性,html就会重新渲染});document.getElementById("firstName").addEventListener("keyup",function(e){data.name=this.value;//只需要修改属性,html就会重新渲染});})();</script></body></html>
使用场景说明:
当我们想要修改页面某个元素的信息,但又不想费劲地查找dom元素再去修改元素的值,
这种情况下,可以用demo中的数据绑定,只需修改数据的值,就实现了页面元素重新渲染
请看下面的gif动画中展示的,只要修改data.age和data.name,页面元素就自动重新渲染了
结束语
本demo只是简单实现数据绑定,很多功能并未实现,只是提供一种思路,抛砖引玉;
如果对上述代码中的Observer类的代码不是很理解,可以先了解下观察者模式以及实现原理;
最后,感谢大家的阅读!!
推荐: 翻译项目Master的自述:
1. 干货|人人都是翻译项目的Master
2. iKcamp出品微信小程序教学共5章16小节汇总(含视频)
3. 开始免费连载啦~每周2更共11堂iKcamp课|基于Koa2搭建Node.js实战项目教学(含视频)| 课程大纲介绍
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 【VUE】使用Table组件进行数据双向绑定
写在前面的 由于SIMATIC内部的框架有很多,前后端自成一家。不过前端大部分还是使用了vue。以前也听说过.NET版本的前后端分离,但也仅仅局限于听说,这次可是亲身体会到了,对比JAVA,我只能说。。。扎心了老铁们。虽然.NE…...
2024/3/15 23:53:17 - 班课列表——ionic4如何实现数据绑定
演示效果 单击班课图标→显示班课的信息 我的班课页面开发逻辑 关于如何添加一个班课图标我在前面的博客有提到,感兴趣的朋友可以去前面看看。 开发“我的班课”页面主要干两件事: 解决数据绑定 首先要写显示班课信息的方法,先把ts代码贴在这…...
2024/3/25 10:32:54 - 编程语言 IDE 对比
IDE是集成开发环境的英文缩写,所谓集成开发环境,就是将你在开发过程中所需要的工具或功能集成到了一起,比如代码编写、分析、编译、调试等功能,从而最大化地提高开发者的工作效率。 每种编程语言都有一些特定的IDE,本文将简单为你介绍这些IDE之间的区别,希望能够为你选择…...
2024/3/26 20:07:22 - AngularJs数据绑定以及数据绑定的API
一、AngularJs入门 官方说法:AngularJs库扩展了html的词汇库. 细节1:ng 代表 angular,是angular的缩写。ng-model和ng-click就是被AngularJs扩展出来的属性。 细节2:在angular中,用到回调函数时,是一种特殊…...
2024/3/15 23:53:14 - Echarts圆饼图从后台获取数据动态填充
先来看一下我的页面展示结果,这里用的是官网上那个最简单的例子 贴一下前端代码 getData () { var url this.HOST /recruit/getRecruitmentAnalyse this.$http.post(url).then(resp > { var data resp.data var tatilData [] for (var i 0; i < da…...
2024/3/25 12:55:17 - angular|大地老师第二节 angular中创建组件,组件详解,绑定数据
第二节课后总结 只看视频印象不深 只有记录下来才能记得更久~ 一,目录结构分析 node_modules:项目所需的各种依赖,也就是目录中package.json里定义的各种模块,通过npm install/cnpm install 安装到node_modules中 package.json…...
2024/3/25 7:28:37 - 哪里能做欧式哪里做欧式哪有学无痕双眼皮的
...
2024/3/15 23:53:11 - 哪个明星割了哪个医院做双眼皮好些
...
2024/3/29 19:22:21 - 埋线眉骨高适合哪种眉骨高适合什么眉眼间距太近割眉眼距离近做目前最先进哪个埋线双眼皮好东西
...
2024/3/27 4:53:35 - angularJs中$http获取后台数据实例
1.html <div ng-app"module" ng-controller"ctrl"><table border"1" width"600"><tr><td>网站名称</td><td>网址</td></tr><tr ng-repeat"v in data"><td>{{…...
2024/3/17 10:08:20 - android点击AlertDialog的button不退出对话框的方法
Android弹出对话框时,默认情况下无论点击哪个button,触发事件后对话框都会自动关闭。 可以利用反射机制,使触发按钮点击事件之后不退出对话框。 解决方法:在setButton的OnClickListener的OnClick里改变field,filed的改变对于该对象来说是全局的,所以想要关闭时也要添加代…...
2024/3/26 13:49:46 - 埋线双眼皮画线技巧
...
2024/3/27 20:45:39 - AngularJS入门基础——表单验证
<form name"form" novalidata> <label name"email">your email</label> <input type"email" name"email" ng-model"email" placeholder"Email Address"> </form>/*如下是朋友空间…...
2024/3/26 10:13:13 - 从浅入深剖析angular表单验证
最近手上维护的组件剩下的BUG都是表单验证,而且公司的表单验证那块代码经历的几代人,里面的逻辑开始变得不清晰,而且代码结构不是很angular。 是很有必要深入了解表单验证。 入门之前,我觉得应该先了解angular内置的表单验证有哪些…...
2024/3/19 23:55:16 - 埋线双眼皮定点设计图
...
2024/3/26 0:18:13 - Android 对话框进阶(自定义)
要产生对话框,特别是产生提醒对话框.网上例子全是.都是抄来抄去的.用了AlertDialog.builder类,这里就不说了. 我要说的是如何定制一个对话框.就是按自己的想要的模样产生这个对话框.如何实现透明? 如何改变对话框的显示位置? 这需要深入研究. 要定制对话框.一般需…...
2024/3/15 23:53:07 - 埋线双眼皮变内双照片
...
2024/3/25 22:28:25 - angular5项目端口冲突之解决办法
在同时运行两个ng项目的时候,会提示端口冲突,因为它们的端口号都默认的是4200,这时候,就需要修改其中一个项目的端口号了。有两种修改途径,如下。 (1)去对应的文件里面修改代码,angu…...
2024/3/25 13:09:46 - 埋线双眼皮变内双了
...
2024/3/15 23:53:03 - 埋线双眼皮5mm图片
...
2024/3/15 23:53:03
最新文章
- Oracle里的统计信息
目录 一、什么是统计信息 二、oracle收集和查看统计信息的方法 1、使用analyze命令收集统计信息 2、使用dbms_stats包收集统计信息 3、analyze和dbms_stats的区别 4、查看统计信息 一、什么是统计信息 oracle数据库里的统计信息是如下的一组数据:他们存储在数…...
2024/3/29 19:55:28 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - ubuntu20.04\22.04 + GTX3060(直接硬盘安装)
准备 工控台ubuntu20.04.06 显卡GTX3060驱动NVIDIA-Linux-x86_64-535.129.03.run 安装启动盘制作: 制作U盘安装盘工具rufus-4.3.exe (搜索网上自行下载),步骤都是下一步式,引导类型选择镜像文件,文件系统…...
2024/3/29 18:50:06 - 竞赛 GRU的 电影评论情感分析 - python 深度学习 情感分类
1 前言 🔥学长分享优质竞赛项目,今天要分享的是 🚩 GRU的 电影评论情感分析 - python 深度学习 情感分类 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 这…...
2024/3/29 6:37:38 - 4G/5G视频记录仪_联发科MTK6765平台智能记录仪方案
视频记录仪主板采用了联发科MT6765芯片,该芯片采用12nm FinFET制程工艺,8*Cortex-A53架构,搭载安卓11.0/13.0系统,主频最高达2.3GHz,待机功耗可低至5ma,并具有快速数据传输能力。配备了2.4英寸高清触摸显示…...
2024/3/28 19:58:06 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/3/29 18:08:39 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/3/29 18:08:34 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/3/29 2:45:46 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/3/29 16:26:39 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/3/29 5:19:52 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/3/29 18:08:00 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/3/29 11:11:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/3/29 1:13:26 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/3/29 8:28:16 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/3/29 7:41:19 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/3/29 18:07:15 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/3/29 9:57:23 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/3/29 0:49:46 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/3/29 18:06:57 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/3/29 17:27:19 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/3/29 18:06:36 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/3/29 18:06:22 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/3/28 18:26:34 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/3/29 18:06:01 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/3/28 20:09:10 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57