宁波网站制作定制互联网广告营销是什么
web/
2025/10/4 8:37:20/
文章来源:
宁波网站制作定制,互联网广告营销是什么,网站建设自查工作总结,衡水seo优化阅读目录 1.理解VUE中的自定义指令回到顶部1.理解VUE中的自定义指令 默认核心指令有 (v-model 和 v-show), 但是有时候我们需要用到自定义指令#xff0c;在vue中#xff0c;代码复用主要形式和抽象是组件#xff0c;但是在有的情况下#xff0c;我们仍然需要对DOM元素进行… 阅读目录 1.理解VUE中的自定义指令回到顶部 1.理解VUE中的自定义指令 默认核心指令有 (v-model 和 v-show), 但是有时候我们需要用到自定义指令在vue中代码复用主要形式和抽象是组件但是在有的情况下我们仍然需要对DOM元素进行底层操作所以这个时候我们需要用到自定义指令。 比如下面的一个input框当页面加载时元素将获得焦点我们还没有点击input框input就获得焦点了如下demo代码 !DOCTYPE html
htmlheadtitle演示Vue/titlestyle/style/headbodydiv iddemoinput v-focus/div/bodyscript src./vue.js/scriptscript typetext/javascript// 注册一个全局定义指令 v-focusVue.directive(focus, {// 绑定元素插入到DOM 中inserted: function (el) {// 聚焦元素el.focus()}})new Vue({el: #demo})/script
/html 查看效果 上面的是全局定义指令 v-foucs, 当然我们也可以局部定义如下代码 !DOCTYPE html
htmlheadtitle演示Vue/titlestyle/style/headbodydiv iddemoinput v-focus/div/bodyscript src./vue.js/scriptscript typetext/javascriptnew Vue({el: #demo,directives: {focus: {// 指令的定义inserted: function (el) {// 聚焦元素el.focus()}}}})/script
/html 查看效果 然后我们就可以在任何input元素框或者textarea使用 v-focus 了如下代码 input v-focus / 2. 指令定义函数提供了如下几个钩子函数(根据VUE教程来)bind: 只调用一次指令第一次绑定到元素时调用也就是说初始化时候调用一次。inserted: 被绑定元素插入父节点时调用(父节点需要存在才会调用)。update: 被绑定元素所在的模板更新时调用(通过比较更新前后的绑定值)。componentUpdated: 被绑定元素所在模板完成一次更新周期时调用。unbind: 指令与元素解绑时调用只调用一次和bind对应。 上面几个钩子函数有如下参数 (el, binding, vnode, oldVnode)el: 指令所绑定的元素可用来直接操作DOM。binding: {Object} obj有如下属性name: 指令名不包括 v- 前缀value: 指令绑定值。比如 v-my-directive 11, 那么value就是2.oldValue: 指令绑定的前一个值仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。expression: 绑定值的字符串形式。 例如 v-my-directive1 1 expression 的值是 1 1。arg: 传给指令的参数。例如 v-my-directive:foo arg 的值是 foo。modifiers: 一个包含修饰符的对象。 例如 v-my-directive.foo.bar, 修饰符对象 modifiers 的值是 { foo: true, bar: true }。 vnode: Vue编译生成的虚拟节点。oldVnode: 上一个虚拟节点仅在 update 和 componentUpdated 钩子中可用。 注意 除了 el 之外其它参数都应该是只读的尽量不要修改他们。如果需要在钩子之间共享数据建议通过元素的 dataset 来进行。 如下demo代码 !DOCTYPE html
htmlheadtitle演示Vue/titlestyle/style/headbodydiv iddemo v-demo:hello.a.bmessage/div/bodyscript src./vue.js/scriptscript typetext/javascriptVue.directive(demo, {bind: function(el, binding, vnode) {var s JSON.stringify;el.innerHTML name: s(binding.name) br/ value: s(binding.value) br/ expression: s(binding.expression) br/ argument: s(binding.arg) br/ modifiers: s(binding.modifiers) br/ vnode: Object.keys(vnode).join(, )}})new Vue({el: #demo,data: {message: hello!}})/script
/html 查看效果 对象字面量如果指令需要多个值可以传入一个 JavaScript 对象字面量。如下代码 !DOCTYPE html
htmlheadtitle演示Vue/titlestyle/style/headbodydiv iddemo v-demo{ color: white, text: hello! }/div/bodyscript src./vue.js/scriptscript typetext/javascriptVue.directive(demo, function (el, binding) {console.log(binding.value.color) // whiteconsole.log(binding.value.text) // hello!})new Vue({el: #demo})/script
/html 查看效果 在控制台可以看到输出了字符串了。 2. Vue.js自定义指令的用途。上面是教程中的一些demo但是在实际当中我们需要用到什么地方呢我们可以预想到可以使用到预加载数据的地方比如预加载图片由于图片加载需要一些时间因此我们先加载一张占位符图片等图片真正加载完成时候才加载真正的图片这样的用户体验效果更能更好点。下面是使用vue自定义指令来实现这个功能代码如下 !DOCTYPE html
htmlheadtitle演示Vue/titlestyleimg { width: 180px; height: 180px; overflow: hidden;}/style/headbodydiv iddemoimg v-foritem in list v-imgitem.url//div/bodyscript src./vue.js/scriptscript typetext/javascriptVue.directive(img, {inserted: function(el, binding) {console.log(el)// 下面使用一张背景颜色来演示一下var color Math.floor(Math.random()*1000000);el.style.backgroundColor # color; // 随机的背景颜色var img new Image();img.src binding.value; img.onload function() {el.style.backgroundImage url( binding.value );}}});new Vue({el: #demo,data: {list: [{url: http://img.alicdn.com/imgextra/i3/730692984/TB2.dQMdxXkpuFjy0FiXXbUfFXa_!!730692984-0-beehive-scenes.jpg_180x180q70},{url: http://img.alicdn.com/imgextra/i2/730692984/TB239AJdw0kpuFjSspdXXX4YXXa_!!730692984-0-beehive-scenes.jpg_180x180q70},{url: http://img.alicdn.com/imgextra/i4/730692984/TB29TsZdrVkpuFjSspcXXbSMVXa_!!730692984-0-beehive-scenes.jpg_180x180q70}]}})/script
/html 查看效果 如上演示可以看到刚开始载入页面的时候有那么一瞬间先是背景颜色 最后是图片这里只是简单的演示一下在实际使用中我们可以先放一张预加载的图片当真正图片加载完成的时候才显示真正的图片省的在图片未加载完成的时候背景图片是空白的效果就不是很好了。转载于:https://www.cnblogs.com/tugenhua0707/p/6828631.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86693.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!