当前位置: 网站首页>小程序开发>小程序制作

温县400电话申请开通【温县企业网站建设】温县微信公众号小程序开发运营价格、温县微信公众号APP软件客户端设计运营、温县网页页面设计公司费用、温县公司网站制作方案流程改版维护大概需要多少钱

发表日期: 2021-05-07 09:28:20 浏览次数:60

温县400电话申请开通【温县企业网站建设】温县微信公众号小程序开发运营价格、温县微信公众号APP软件客户端设计运营、温县网页页面设计公司费用、温县公司网站制作方案流程改版维护大概需要多少钱


温县,隶属于河南省焦作市,地处豫北平原西部,南滨黄河,北依太行,截至2017年,全县总面积481.3平方千米,辖7个乡镇、4个街道,262个行政村,总人口46.8万,县政府驻温泉街道。 [1] 

古时因境内有温泉而得名,在夏时被称温国,明清隶属怀庆府辖。温县诞生了思想家卜商、三国著名政治家军事家司马懿、北宋画家郭熙等历史名人,是太极拳发源地,温、苏等姓氏起源地。全国闻名的“武术之乡” [2]  、“怀药之乡”和优质小麦种子基地,中国十大休闲旅游县。 [1]  [3] 

2018年,温县完成地区生产总值296.61亿元,城镇居民人均可支配收入达到27876元,农村居民人均可支配收入达到16258元。 [4-5] 


vue 的基础应用(下)

递归组件

组件是可以在它们自己的模板中调用自身的。不过它们只能通过 name 选项来做这件事。我们实现一个自定义树的组件。请看示例:

<!DOCTYPE html><html><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src='vue.js'></script></head><body><div id='app'><custom-tree :list='treeData'></custom-tree></div><script>// 递归组件 - 自定义树Vue.component('custom-tree', {// 给组件命名name: 'custom-tree',               // {1}props: ['list'],template: `<ul><li v-for='item in list'>{{item.name}}<!-- v-if 指定退出的条件,防止无线递归 --><custom-tree:list='item.children'v-if='item.children'></custom-tree></li></ul>`})const app = new Vue({el: '#app',// 数据也需要符合递归的条件data: {treeData: [                   // {2}{name: 'a',children: [{name: 'b'},{name: 'c'}]},{name: 'd',children: [{name: 'e',children: [{name: 'f'},{name: 'g'}]}]}]}})</script></body></html>
// 页面输出:abcdefg

有3点需要注意:

  • 给组件设置 name (行{1})

  • 使用一个条件来结束无限递归。这里使用了 v-if

  • 数据得满足递归(行{2})

Tip: 后续不在提供完整的代码,省略 head、body 等。

动态组件

vue 提供了 <component> 来动态的挂载组件。请看示例:

<div id='app'><!-- vue 提供了 <component> 来动态的挂载组件 --><component v-bind:is="currentComponent"></component><button @click='switchHandle'>切换组件</button></div><script>var comC = {template: `<p>我是组件 C</p>`};var app = new Vue({el: '#app',data: {currentComponent: 'comB'},// 局部注册。components 选项中定义你想要使用的组件components: {comA: {template: `<p>我是组件 A</p>`},comB: {template: `<p>我是组件 B</p>`},comC: comC},methods: {switchHandle: function(){let map = {'comA': 'comB','comB': 'comC','comC': 'comA'};// 动态切换组件this.currentComponent = map[this.currentComponent]}}})</script>
// 页面输出:我是组件 A切换组件// 点击按钮(‘切换组件’),依次显示'我是组件 B'、'我是组件 C'...

内置的组件 component 根据属性 is 的值来决定哪个组件被渲染。

nextTick

Vue.nextTick( [callback, context] )

用法
在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。—— 不明白的化,请看示例:

<div id="example">{{message}}</div>  <script>  var vm = new Vue({    el: '#example',    data: {      message: '123'    }  })  vm.message = 'new message' // 更改数据               //        {20}  console.log(vm.$el.textContent === 'new message')   // false  {21}  Vue.nextTick(function () {    console.log(vm.$el.textContent === 'new message') // true   {22}  })  </script>

更改数据后(行{20},dom 元素中的内容其实没有得到更新,输出 false(行{21});在 Vue.nextTick() 方法中才被更新,输出 true(行{22})。

这里涉及到 vue 中一个概念:异步更新

假如在更改状态(行{20})后,dom 元素立马得到更新(行{21}),也就是输入出 true,那么用户使用 for 循环改变某个状态 100 次,dom 元素就得更新 100 次,是否觉得浪费!所以 vue 的策略是:使用异步更新,也就是不会马上更新 dom。

手动挂载

vm.$mount( [elementOrSelector] )

用法
如果 Vue 实例在实例化时没有收到 el 选项,则它处于“未挂载”状态。我们可以使用 vm.$mount() 方法手动。

我们创建一个组件,三秒后再挂载它。请看示例:

<div id="app"></div><script>// Vue.extend() 使用基础 Vue 构造器,创建一个“子类”var MyComponent = Vue.extend({template: '<div>Hello!</div>'})// 创建并挂载到 #app (会替换 #app)setTimeout(function(){// 3 秒后页面上才会看见 Hello!new MyComponent().$mount('#app')}, 3000)</script>

3 秒后,页面上才会看见 Hello!

数字输入框组件

需求:数字输入框只能输入数字,有两个按钮,分别是减1和加1。此外还可以设置初始值、最大值、最小值,数字改变时通知父组件。

请看完整代码:

<div id='app'>父组件 value = {{value}}<!--  v-model 实现双向绑定 --><custom-number v-model='value':max-value='maxValue' :min-value='minValue':step='10'></custom-number></div><script>Vue.component('custom-number', {props:{// 必须是一个数字value: {type: Number,default: 0},maxValue: {type: Number,// 正无穷大default: Number.POSITIVE_INFINITY},minValue: {type: Number,// 负无穷大default: Number.NEGATIVE_INFINITY},// 默认加减 1step: {type: Number,default: 1}},data: function(){return {inputValue: this.value}},created: function(){// 处理:初始值不在最大值和最小值的范围内this.update(this.value)},computed: {// 减(-)不可点minIsDisabled: function(){return this.inputValue <= this.minValue},maxIsDisabled: function(){return this.inputValue >= this.maxValue}},watch: {// 监听 inputValue,通知父组件inputValue: function(val, oldVal){this.$emit('input', val)},// 父组件改变值,子组件的值也跟着改变value: function(val){this.update(val);}},template: `      <div>        <button :disabled="minIsDisabled" @click='minus'> - </button>         <input :value='inputValue' @change='changeHandle' >         <button :disabled="maxIsDisabled" @click='add'> + </button>        <p>          子组件 inputValue = {{inputValue}}        </p>      </div>      `,methods: {// 如果输入值不是数字,则不会更改值changeHandle: function(e){var val = e.target.value;this.update(val, e.target)},// obj 是否是数字。摘自 jqueryisNumeric: function(obj) {return !isNaN( parseFloat(obj) ) && isFinite( obj );},minus: function(){this.update(this.inputValue - this.step);},add: function(){this.update(this.inputValue + this.step);},// 是数字才更新update: function(val, target={}){if(!this.isNumeric(val)){// 将 input 值置为上次的值target.value = this.inputValue;return;}val = Number(val);// 大于最大值,则重置为最大值if (val > this.maxValue){val = this.maxValue}else if(val < this.minValue){val = this.minValue}this.inputValue = val;}}});var app = new Vue({el: '#app',data: {value: 10,maxValue: 100,minValue: 1}})</script>
// 页面输出:父组件 value = 10- 10 +子组件 inputValue = 10// 点击 +(每次加减10)父组件 value = 20- 20 +子组件 inputValue = 20// 继续点击2次 // 减号(-)变为不可点父组件 value = 1- 1 +子组件 inputValue = 1

Tabs 标签页

需求:实现一个常用的组件 —— tabs 标签页。

:不明白需求的可以看element-ui-tabs

思路:

  • 定义组件 el-tabs

  • 定义 el-tabs 的子组件 tab-pane

  • 父子组件通信使用 vm.$parent 和 vm.$children

请看完整代码:

<style>ul{margin:0;padding: 0;border-bottom: 1px solid;margin-bottom: 10px;}li{display:inline-block;margin-right:10px;cursor:pointer;}.active{color:#409eff;}</style><div id='app'>  <el-tabs v-model="activeKey">    <el-tab-pane label="用户管理">      用户管理内容      <p>我是 A</p></el-tab-pane><el-tab-pane label="配置管理" name="second">配置管理内容</el-tab-pane><el-tab-pane label="角色管理">角色管理内容<p>我是 C</p></el-tab-pane><el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿内容</el-tab-pane></el-tabs></div><script>// 父组件Vue.component('el-tabs', {props:{value:{type: [String, Number]}},data: function(){return {currentTab: this.value,// 存放 tabtabLists: []}},watch: {currentTab: function(){this.updateStatus();},// 处理:父组件更改 valuevalue: function(val, oldVal){this.currentTab = val}},template: `<div><ul><liv-for='(item, index) in tabLists':class='{active: item.name === currentTab}'@click='handleClick(index)'>{{item.label}}</li></ul><slot></slot></div>`,methods: {// 取得 tab-panegetTabPanes: function(){return this.$children.filter(item => {return item.$options.name === 'tab-pane'})},// 更新 tabListsupdateTabLists: function(){let tabLists = [];this.getTabPanes().forEach((item, index) => {if(!item.id){item.id = index}tabLists.push({label: item.label,name: item.id})// 默认展示第一个if(index === 0){if(!this.currentTab){this.currentTab = item.id;}}})this.tabLists = tabLists;this.updateStatus()},handleClick: function(index){this.currentTab = this.tabLists[index].name;console.log(`name = ${this.currentTab}`)this.updateStatus()},// 让子组件显示或隐藏updateStatus: function(){this.getTabPanes().forEach(item => {item.updateShow(this.currentTab === item.id)})}}});// 子组件Vue.component('el-tab-pane', {name: 'tab-pane',props: {// 标签标题label:{type: String,default: ''},// pane 的名字,不必填name: [String, Number]},data: function(){return {// 显示与否,由父组件决定show: false,// 不允许通过父组件更改 props 中的属性 name// 用 id 来替代 name 属性id: this.name}},created: function(){this.$parent.updateTabLists();},template: `<div v-if='show'><slot></slot></div>`,methods: {updateShow: function(v){this.show = v;}}});const app = new Vue({el: '#app',data: {// 当前选中的 tabactiveKey: 2}})</script>
// 页面输出:// 第一行是 4 个 tab,现在是`角色管理`被选中用户管理 配置管理 角色管理 定时任务补偿角色管理内容我是 C

微信图片_20210425092605.jpg

温县400电话申请开通温县企业网站建设温县微信公众号小程序开发运营价格、温县微信公众号APP软件客户端设计运营、温县网页页面设计公司费用、温县公司网站制作方案流程改版维护大概需要多少钱

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: https://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878