vue教程
vue
window本地保存Local Storage
保存:window.localStorage.setItem('名','值');
window.localStorage.setItem('token',backdata.data[2]);
查询:window.localStorage.getItem('名');
window.localStorage.getItem('token');
删除:window.localStorage.clear('名');
window.localStorage.clear('token');
删除所有:window.localStorage.clear();
删除指定:window.localStorage.removeItem('mid');
保存数组,取出数组
var dade = ['周一','周二','周三','周四','周五'];
存:window.localStorage.setItem('123',JSON.stringify(dade));
取:JSON.parse(window.localStorage.getItem('123'));
vue路由报错,虽然不影响,index.js加上
const originalPush = Router.prototype.push
Router.prototype.push = function push(location) {return originalPush.call(this, location).catch(err => err)
}
更新视图数据
this.$set(this,'shangp',0);
this是更新的位置,data的数据就是this
shangp是更新的名称,data里的shangp,
0表示数据改为0下拉框不更新问题,改变以后,在写一条强制更新
this.$forceUpdate();
vue监听路由变化
//写在循环菜单列表界面就可以
watch:{$route(to,from){console.log(to.path);}
},
下载
var url = this.urlimg+"/excel/"+e+'.xlsx';
let a = document.createElement('a');
a.href = url;
a.click();
vue打包
打包命令:npm run build
vue打包出现白屏es6语法转es5
Vue在IE、低版本Android显示空白问题
这是由于IE对promise的支持不好,我们需要安装:babel-polyfill和es6-promise:
npm install babel-polyfill
npm install es6-promise
然后在main.js文件中引用:
import ‘babel-polyfill’
import Vue from ‘vue’
import Es6Promise from ‘es6-promise’
Es6Promise.polyfill()
最后 build/webpack.base.conf.js 文件中app配置修改如下:
module.exports = {
entry: {
app: [“babel-polyfill”, “./src/main.js”]
} };
vue标签
事件
加载界面前加载(节点没出来)
created() {},
加载界面前加载(节点出来)
mounted(){},
被动触发事件
methods: {},
计算属性
computed:{},
侦听器
watch:{}
过滤器
filters:{}
v-text / v-html 文本
<body><div id="div" {{class}}><p v-text="seen"></p><p v-html="str_html"></p></div>
</body>
<script>var app = new Vue({el:'#div',data:{seen:'<h1>Vue</h1>',str_html:'<h1>Vue</h1>',class:'dd',}})
</script>
v-bind 属性绑定
动态绑定图片的路径
<img id=“app” v-bind:src="src" />
<script>var vm = new Vue({el: '#app',data: {src: '1.jpg'}});
</script>
绑定a标签上的id
<a id="app" v-bind:href="'del.php?id=' + id">删除</a>
<script>var vm = new Vue({el: '#app',data: {id: 11}});
</script>
绑定class
对象语法和数组语法
-
对象语法
如果isActive为true,则返回的结果为
<div id="app" class="active"></div>
<div id="app" v-bind:class="{active: isActive}">hei </div> <script>var vm = new Vue({el: '#app',data: {isActive: true}}); </script>
-
数组语法
渲染的结果:
<div id="app" class="active text-danger"></div>
<div id="app" v-bind:class="[activeClass, dangerClass]">hei </div> <script>var vm = new Vue({el: '#app',data: {activeClass: 'active',dangerClass: 'text-danger'}}); </script>
绑定style
对象语法和数组语法
-
对象语法
渲染的结果:
<div id="app" style="color: red; font-size: 40px;">hei</div>
<div id="app" v-bind:style="{color: redColor, fontSize: font + 'px'}">hei </div> <script>var vm = new Vue({el: '#app',data: {redColor: 'red',font: 40}}); </script>
-
数组语法
渲染结果:
<div id="app" style="color: red; font-size: 18px;">abc</div>
<div id="app" v-bind:style="[color, fontSize]">abc</div> <script>var vm = new Vue({el: '#app',data: {color: {color: 'red'},fontSize: {'font-size': '18px'}}}); </script>
v-model 双向数据绑定
单向数据绑定
<div id="div"><input type="text" :value="input_val">
</div><script>var app = new Vue({el: '#div',data: {input_val: 'hello world '}})
</script>
双向数据绑定
<div id="div"><input type="text" v-model="input_val" >
</div><script>var app = new Vue({el: '#div',data: {input_val: 'hello world '}})
</script>
多行文本 / 文本域
<div id="div"><textarea v-model="inp_val"></textarea><div>{{ inp_val }}</div>
</div><script>var app = new Vue({el: '#div',data: {inp_val: ''}})
</script>
绑定复选框
<div id="div">吃饭:<input type="checkbox" value="eat" v-model="checklist"><br>睡觉:<input type="checkbox" value="sleep" v-model="checklist"><br>打豆豆:<input type="checkbox" value="ddd" v-model="checklist"><br>{{ checklist }}
</div><script>var vm = new Vue({el: '#div',data: {checklist: ''// checklist: []}});
</script>
绑定单选框
<div id="app">男<input type="radio" name="sex" value="男" v-model="sex">女<input type="radio" name="sex" value="女" v-model="sex"> <br>{{sex}}
</div><script>var vm = new Vue({el: '#app',data: {sex: ''}});
</script>
修饰符
.lazy
- 取代 input
监听 change
事件
.number
- 输入字符串转为有效的数字
.trim
- 输入首尾空格过滤
<div id="div"><input type="text" v-model.lazy="input_val">{{input_val}}
</div><script>var app = new Vue({el: '#div',data: {input_val: 'hello world '}})
</script>
v-on 绑定事件监听
click点击事件
<div id="app"><!-- 使用事件绑定的简写形式 --><input type="button" value="按钮" @click="cli">
</div>
<script>var vm = new Vue({el: '#app',data: {},// 将事件处理程序写入methods对象methods: {cli: function () {alert('123');}}});
</script>
向事件处理器中传参
<div id="app"><!-- 直接调用传参即可 --><input type="button" value="按钮" @click="cli(1,3)">
</div>
<script>var vm = new Vue({el: '#app',data: {},methods: {// 接受参数cli: function (a,b) {alert(a+b);}}});
</script>
而此时,如果在处理器中需要使用事件对象,则无法获取,我们可以用特殊变量 $event
把它传入方法
<input type="button" value="按钮" @click="cli(1,3,$event)">
methods: {// 接受参数cli: function (a,b,ev) {alert(a+b);console.log(ev);}
}
事件修饰符a标签阻止浏览器的跳转
原生 JS 代码,想要阻止浏览器的默认行为(a标签跳转、submit提交),我们要使用事件对象的 preventDefault()
方法
<div id="app"><a href="http://www.qq.com" @click.prevent="cli">腾百万</a>
</div>
<script>var vm = new Vue({el: '#app',data: {},// 将事件处理程序写入methods对象methods: {cli: function () {alert('123');}}});
</script>
使用修饰符绑定一次性事件
<div id="app"><a href="http://www.qq.com" @click.once="cli($event)">腾百万</a>
</div>
<script>var vm = new Vue({el: '#app',data: {},// 将事件处理程序写入methods对象methods: {cli: function (ev) {ev.preventDefault();alert('123');}}});
</script>
按键修饰符(键盘)
绑定键盘抬起事件,但是只有enter
键能触发此事件
<div id="app"><input type="text" @keyup.enter="keyup">
</div>
<script>var vm = new Vue({el: '#app',data: {},methods: {keyup:()=>{console.log('111')}}});
</script>
系统修饰符按住 shift
后才能触发点击事件
按住 shift
后才能触发点击事件
<div id="app"><input type="button" value="按钮" @click.shift="cli">
</div>
<script>var vm = new Vue({el: '#app',data: {},methods: {cli:()=>{console.log('111')}}});
</script>
鼠标修饰符
鼠标中键触发事件
<div id="app"><input type="button" value="按钮" @click.middle="cli">
</div>
<script>var vm = new Vue({el: '#app',data: {},methods: {cli:()=>{console.log('111')}}});
</script>
v-show 显示隐藏
根据表达式之真假值,切换元素的 display
CSS 属性。
<div id="app"><p v-show="is_show">Vue</p>
</div>
<script>var vm = new Vue({el:'#app',data:{is_show:false},methods:{},})
</script>
点击按钮切换隐藏显示
<div id="app"><input type="button" value="按钮" @click="isshow"><p v-show="is_show">Vue</p>
</div>
<script>var vm = new Vue({el:'#app',data:{is_show:false},methods:{isshow:function(){this.is_show = !this.is_show;}},})
</script>
v-if / v-else / v-else-if 条件判断
https://cn.vuejs.org/v2/api/#v-if
<div id="app"><div v-if="type === 'A'">A</div><div v-else-if="type === 'B'">B</div><div v-else-if="type === 'C'">C</div><div v-else>Not A/B/C</div>
</div>
<script>var vm = new Vue({el: '#app',data: {type: 'F'},})
</script>
v-for 循环
https://cn.vuejs.org/v2/api/#v-for
<div id="app"><ul><li v-for="(val,key) in arr">{{val}}---{{key}}</li></ul><ul><li v-for="(val,key) in obj">{{val}}---{{key}}</li></ul>
</div>
<script>var vm = new Vue({el: '#app',data: {arr: ['a', 'b', 'c'],obj: { id: 1, name: '李四' }},})
</script>
js里遍历
this.data.forEach(item => {console.log(item)
});
var a = [1,2,3];
a.forEach(function(value,key,arr){console.log(value) // 结果依次为1,2,3console.log(key) // 结尾依次为0,1,2console.log(arr) // 三次结果都为[1,2,3],该参数貌似没什么用
})
v-cloak没加载好的时候隐藏
当我们的网络受阻时,或者页面加载完毕而没有初始化得到 vue 实例时,DOM中的 {{}}
则会展示出来;
为了防止现象,我们可以使用 CSS 配合 v-cloak 实现获取 VUE 实例前的隐藏;
<style>[v-cloak] {display: none;}
</style>
<div id="app"><p v-cloak>{{obj.id}}</p>
</div>
<script src="./vue.js"></script>
<script>setTimeout(() => {var vm = new Vue({el: '#app',data: {obj: { id: 1, name: '李四' }},})}, 2000);
</script>
v-once只渲染元素和组件一次
只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过
<div id="app"><p v-once>{{msg}}</p>
</div>
<script>var vm = new Vue({el: '#app',data: {msg:'kkk'},})
</script>
计算属性与侦听器
计算属性
注意,每次在模板中使用 {{ fullname() }}
fullname方法就会被调用执行一次;所以,对于任何复杂逻辑,你都应当使用计算属性 ,因为计算属性,会自动缓存数据:
<div id="div"><input type="text" v-model="xing"><input type="text" v-model="ming"><br>{{fulln}}<!-- 一百次调用 -->{{fulln}}
</div><script>var app = new Vue({el: '#div',data: {xing:'',ming:'',},computed:{fulln(){return this.xing+this.ming+Date.now();}}})
</script>
我们可以将同一函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实是完全相同的。然而,不同的是计算属性是基于它们的依赖进行缓存的。只在相关依赖发生改变时它们才会重新求值;多次调用,计算属性会立即返回之前的计算结果,而不必再次执行函数。
侦听器
<div id="div"><input type="text" v-model="xing"><input type="text" v-model="ming">{{ fullname }}
</div>
<script>var app = new Vue({el: '#div',data: {xing: '',ming: '',fullname:''},// 设置侦听器watch: {// 侦听器中的方法名和要真挺的数据属性名必须一致// xing 发生变化,侦听器就会被执行,且将变化后的值和变化前的值传入xing:function(newVal,old_val){this.fullname = newVal+this.ming;},ming:function(newVal,oldVal){this.fullname = this.xing+newVal;}}})
</script>
通过上面的案例,我们基本掌握了侦听器的使用,但是我们也发现,与计算属性相比,侦听器并没有优势;也不见得好用,直观上反而比计算属性的使用更繁琐;
虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过 watch
选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。
<div id="div"><input type="text" v-model="xing"><input type="text" v-model="ming">{{ fullname }}
</div>
<script src="./jq.js"></script>
<script>var app = new Vue({el: '#div',data: {xing: '',ming: '',fullname:''},// 设置侦听器watch: {// 侦听器中的方法名和要真挺的数据属性名必须一致// xing 发生变化,侦听器就会被执行,且将变化后的值和变化前的值传入xing:function(newVal,old_val){// this.fullname = newVal+this.ming;var t = this;// 在侦听器中执行异步网络请求$.get('./xx.php',(d)=>{t.fullname = d;})},}})
</script>
过滤器
过滤敏感词汇
<div id="app"><input type="text" v-model="msg"> <br>{{msg|myFilters|get3}}
</div>
<script>var app = new Vue({el: '#app',data:{msg:''},//定义过滤器filters:{// 过滤器的名称及方法myFilters:function(val){return val.toLowerCase();},get3:function(val){// 遇到数字替换为 0 // var reg = /\d/g;// return val.replace(reg,0);return val.replace('苍井空','***');}}})
</script>
全局过滤器
上面的代码中,myFilters
及 get3
两个过滤器,仅在当前 vue 实例中可用;如果在代码 再次 var app2 = new Vue()
得到变量为 app2
的 vue 实例,则两个过滤器在 app2中都不可用;如果需要过滤器在所有实例对象中可用,我们需要声明 全局过滤器
Vue.filter(名称,处理器)
<div id="app"><input type="text" v-model="msg"> <br>{{msg|myFilters}}
</div>
<!-- 定义两个DOM节点 -->
<div id="app2"><input type="text" v-model="msg"> <br>{{msg|myFilters|get3}}
</div>
<script>Vue.filter('myFilters', function (val) {return val.toLowerCase();})// 定义两个全局过滤器Vue.filter('get3', function (val) {return val.replace('苍井空','***');})// 两个Vue 实例var app = new Vue({el: '#app',data: {msg: ''}})var app2 = new Vue({el: '#app2',data: {msg: ''}})
</script>
项目安装Element
安装vue编程框架:npm install -g @vue/cli @vue/cli-init
创建一个项目:vue init webpack myapp
vue init webpack my-project 安装项目
- Project name:项目名
- Project description: 项目描述
- Author: 作者
- Vue build:
- 第一种:配合大部分的开发人员
- 第二种:仅仅中有runtime
- Install vue-router? 是否安装vue-router
- Use ESLint to lint your code?是否使用ESLint来验证我们的语法。
- Pick an ESLint preser:使用哪种语法规范来检查我们的代码:
- Standard: 标准规范
- Airbnb: 爱彼迎规范
- Set up unit test: 设置单元测试
- Setup e2e tests: 设置端对端测试
- Should we run ‘npm install’:要不要帮忙你下载这个项目需要的第三方包
- 使用npm来下载
- 使用yarn来下载
运行:npm run dev
npm i element-ui -S
安装网络请求axios
安装:npm install axios(或者直接下载https://github.com/axios/axios)
<script src="./axios.js"></script>
<script>// 获取全部数据axios.get('http://localhost:3000/list_data').then((data)=>{console.log(data);});
// 获取一条数据
axios.get('http://localhost:3000/list_data/2')
.then((data)=>{console.log(data);
})// 添加一条数据
axios.post('http://localhost:3000/list_data',{stat:false,title:'喝水'})
.then((d)=>{console.log(d);
}).catch(error => console.log(error))// 删除一条数据axios.delete('http://localhost:3000/list_data/4')
.then((d)=>{console.log(d);
}).catch(error => console.log(error))// 修改一条数据axios.put('http://localhost:3000/list_data/6',{title:'hhhhhh'})
.then((d)=>{console.log(d);
}).catch(error => console.log(error))
</script>
vue编程代码
this.$myHttp.post(‘http://www.lda.com/api/v1/admin/login’,this.ruleForm,{
‘Content-Type’: ‘application/x-www-form-urlencoded’
}).then(backdata=>{ // 异步执行成功后
if(backdata.data.mid == ‘0’){
this.$message.error(backdata.data.return);
}
if(backdata.data.mid == ‘1’){
window.localStorage.setItem(‘token’,backdata.data.username);
this.$router.push({name:‘home’});
}
});
路由
https://router.vuejs.org/zh/guide/#html看文档
import Router from ‘vue-router’
import Home from ‘@/components/Home’
import Homes from ‘@/components/Homes’
Vue.use(Router)
export default new Router({
routes: [
{
path: ‘/’,
name: ‘home’,
component: Home,
children:[
path: ‘/homes’,
name: 'homes',component: Homes,
] //子路由
])
路由另外一种写法
使用一个匿名函数, 返回导入的对象
routes: [route("/login",'/Login',"Login"),// /login路径,路由到登录组件{path:"/", // 根路径,路由到 Layout组件component: () => import('../pages/Layout'),redirect:"/index/dashboard",children:[ // 其它所有组件都是 Layout的子组件route("/index/dashboard","/Dashboard","Dashboard"),route("/item/category",'/item/Category',"Category"),route("/item/brand",'/item/Brand',"Brand"),route("/item/list",'/item/Goods',"Goods"),route("/item/specification",'/item/Specification',"Specification"),]}]
使用ES6的语法, 进一步简化为:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZlQXXUgG-1670133556426)(.\image-20200804103558391.png)]
Vuetify
安装
npm install -g @vue/cli @vue/cli-init`
vue init webpack myapp
vue init webpack my-project 安装项目
-
Project name:项目名
-
Project description: 项目描述
-
Author: 作者
-
Vue build:
- 第一种:配合大部分的开发人员
- 第二种:仅仅中有runtime
-
Install vue-router? 是否安装vue-router
-
Use ESLint to lint your code?是否使用ESLint来验证我们的语法。
-
Pick an ESLint preser:使用哪种语法规范来检查我们的代码:
- Standard: 标准规范
- Airbnb: 爱彼迎规范
-
Set up unit test: 设置单元测试
-
Setup e2e tests: 设置端对端测试
-
Should we run ‘npm install’:要不要帮忙你下载这个项目需要的第三方包
-
使用npm来下载
-
使用yarn来下载
-
安装vuetify
npm install vuetify --save
安装后看官方文档导入
一、安装
文件plugins/vuetify.js
import Vue from 'vue'
import Vuetify from 'vuetify'
import 'vuetify/dist/vuetify.min.css'
import 'material-design-icons-iconfont/dist/material-design-icons.css'
import '@mdi/font/css/materialdesignicons.css'
Vue.use(Vuetify)
const opts = {}
export default new Vuetify(opts)
二、安装
main.js文件导入css和vuetify
import Vue from ‘vue’
import App from ‘./App’
import router from ‘./router’
import vuetify from ‘@/plugins/vuetify’
Vue.config.productionTip = false
new Vue({
el: ‘#app’,
router,
vuetify,
components: { App },
template: ‘’
})
css生效包裹在
//…
路由s6写法
{
path: ‘/admin’,
name: ‘admin’,
component: () => import(‘@/components/admin/index’),
}
规划路由
<div id="app"><div class="top">头部</div><div class="container"><div class="left"><li><router-link to="/goods">商品管理</router-link></li><li><router-link to="/user">用户管理</router-link></li></div><div class="main"><router-view></router-view></div></div>
</div>
-
router-link: 可以理解成
链接
, to属性就是对应的路由 -
router-view: 一个占位符, 会被替换成组件的内容
-
<router-view>
是一个占位符,用对应的组件来替换 -
<router-link>
指定跳转的URL地址
左侧导航
<v-navigation-drawer
:mini-variant=“miniVariant”
:src=“bg”
absolute
dark
>
<v-list
dense
nav
class=“py-0”
>
方冠
零售平台
管理后台
大得
<v-list-group
v-for=“item in items_list”
:key=“item.title”
>
{{ item.icon }}
<v-list-item
v-for=“subItem in item.item”
:key=“subItem.title”
:to=“subItem.path”
link
>
da
{{ subItem.title }}
<v-list-item
v-for=“itemb in items”
:key=“itemb.title”
:to=“itemb.path”
link
>
{{ itemb.icon }}
{{ itemb.title }}
<div class=“kuang1 ydong” v-if=“miniVariant==true”
<v-btn icon @click.stop=“miniVariant = !miniVariant” >
<v-btn icon @click.stop=“miniVariant = !miniVariant” >
富文本
Vue-Quill-Editor
GitHub的主页:https://github.com/surmon-china/vue-quill-editor
Vue-Quill-Editor是一个基于Quill的富文本编辑器:[Quill的官网](
一、安装
安装:npm install vue-quill-editor --save
安装:npm install quill --save
二、局部引入
三、使用
<quill-editorv-model="content"ref="myQuillEditor":options="editorOption"@blur="onEditorBlur($event)" @focus="onEditorFocus($event)"@change="onEditorChange($event)">
</quill-editor>
显示富文本内容
<quill-editorv-model="content"ref="myQuillEditor":options="editorOption"@blur="onEditorBlur($event)" @focus="onEditorFocus($event)"@change="onEditorChange($event)"><div class="ql-container ql-snow"><div class="ql-editor" v-html="content"></div></div>
</quill-editor>js部分
this.content = backdata.data[0][0].richtext;
安装网络请求axios封装
安装:npm install axios(或者直接下载https://github.com/axios/axios)
新建assets/js/http.js封装
import axios from ‘axios’;
var myaxios = {};
myaxios.install = function(Vue){
var axios_obj = axios.create({
baseURL: ‘http://www.lda.com/api/v1/’,
})
Vue.prototype.$myhttp = axios_obj;
}
export default myaxios;
main.js引入
import myaxios from ‘@/assets/js/http.js’
Vue.use(myaxios);
.vue文件使用
this.$myhttp.post(‘admin/login’,this.ruleForm,{
‘Content-Type’: ‘application/x-www-form-urlencoded’
}).then(backdata=>{ // 异步执行成功后
// this.$router.push({name:‘home’});
// console.log(backdata);
if(backdata.data.mid == ‘0’){
this.$message.error(backdata.data.return);
}
if(backdata.data.mid == ‘1’){
window.localStorage.setItem(‘token’,backdata.data.username);
this.$router.push({name:‘home’});
}
});
属于img图片遍历
要这样写item.img为接口数据
横线
路由跳转带参数
this.$router.push({name:‘useradd’,query: { id: e }});
获得路由url上的参数
console.log(this.$route.query.id);
iview
安装iview
npm install iview --save
配置maun.js
import iView from ‘iview’
import ‘iview/dist/styles/iview.css’
Vue.use(iView)
然后就可以使用了
克隆
1、点击
<i-button type=“dashed” long @click=“handleAdd” icon=“plus-round”>新增
2、数据
formDynamic: {
items: [
{
value: ‘’
}
]
}
3、克隆
handleAdd () {
this.formDynamic.items.push({
value: ‘’
});
},
vue删除data数据
1、点击
<i-button type=“ghost” @click=“handleRemove(index)” class=“heis”>删除
2、数据
formDynamic: {
items: [
{
value: ‘’
},
{
value: ‘’
}
]
}
3、删除
handleRemove (item) {
console.log(item)
this.$delete(this.formDynamic.items,item);
console.log(this.formDynamic.items)
}
单选框
获得axios网络url
this.$myhttp.defaults.baseURL
城市三连动百度网盘php/citydatas.js文件
安装iview
使用
图片上传
<Icon type=“ios-eye-outline” @click=“handleView(item.url)”>
上传
js部分
css部分
判断是不是在微信打开js
var ua = navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i)=="micromessenger") {this.$Message.info('微信打开');
} else {this.$Message.info('不是微信打开');
}
微信授权跳转
window.location.href = url;
网络请求加参数axios
安装axios
npm install axio
新建http.js
import axios from 'axios';
var myaxios = {};
myaxios.install = function(Vue){var axios_obj = axios.create({baseURL: 'http://www.dadesa.com:8080',})function onGetCall(config) {return config.method === 'get';}axios_obj.interceptors.request.use(function (config) {var urlsa = config.url;var t = Date.parse(new Date()) / 1000;//时间戳if(urlsa.indexOf("?") != -1 ){config.url = config.url + "&aaa="+t}else{config.url = config.url + "?aaa="+t}console.log(config.url);// var t = Date.parse(new Date()) / 1000;//时间戳// config.headers['Authorization'] = treturn config;}, null, { runWhen: onGetCall });Vue.prototype.$myhttp = axios_obj;
}
export default myaxios;main.js引入
import myaxios from '@/assets/js/http.js'
Vue.use(myaxios);
跳转
this.$router.push({path:'/testDemo',query:{setid:123456}});watch: {'$route' (to, from) { //监听路由是否变化//加载项目if(to.path == "/pindex/Allocation"){this.id = this.$route.query.id;console.log(this.id);this.$myhttp.get('admin/examine?id=1'+id,{'Content-Type': 'application/json'}).then(backdata=>{ // 异步执行成功后this.desserts = backdata.data[0];this.total = backdata.data[1];this.page = backdata.data[2];});}}},
监听数组理的数据改变
数组
dades:{id:'',name:'',type:'',}
监听
watch: {'dades.type'(val){console.log(val);}}
拦载请求发送前后
import axios from 'axios';
var myaxios = {};
myaxios.install = function(Vue){var axios_obj = axios.create({baseURL: 'http://www.dadesa.com:8080',})function onGetCall(config) {return config.method === 'get';}//发送请求前拦载axios_obj.interceptors.request.use(function (config) {var urlsa = config.url;var t = Date.parse(new Date()) / 1000;//时间戳var login = window.localStorage.getItem('login');if(urlsa.indexOf("?") != -1 ){config.url = config.url + "&datest="+t+"&login_name="+login}else{config.url = config.url + "?datest="+t+"&login_name="+login}return config;}, null, { runWhen: onGetCall });// //发送请求返回拦载axios_obj.interceptors.response.use(function (response) {// 对响应数据做点什么var data = response.data;if(data == 206){alert('没有操作权限');window.localStorage.clear('login');location.reload();//刷新return false;}return response;}, // function (error) {// // 对响应错误做点什么// return Promise.reject(error);// });Vue.prototype.$myhttp = axios_obj;
}
export default myaxios;
懒加载树Element
<el-form-item label="类型" :rules="[{required: true}]" v-if="csa==1"><el-select v-model="dades.type" placeholder="请选择类型" @change="changesa(dades.type)"><el-option label="住宅" value="1"></el-option><el-option label="车位" value="2"></el-option><el-option label="储藏室" value="3"></el-option><el-option label="商铺" value="4"></el-option></el-select>
</el-form-item><el-form-item label="绑定" :rules="[{required: true}]"><div class="text item"><el-tree:props="datas":data="dataarr"lazy:load="loadNode"show-checkboxref="tree"node-key="id"includeHalfChecked="false":default-expanded-keys="defaultcheckedkeyssa":default-checked-keys="defaultcheckedkeys"></el-tree></div>
</el-form-item>date部分
datas:{ label: 'label',children: 'zones',isLeaf: 'leaf',value: 'id',value1:'region',varue2:'type',value3:'pindex_id',
},
dataarr:[],//监听changesa(e){this.node_had.childNodes = []; //把存起来的node的子节点清空,不然会界面会出现重复树!this.loadNode(this.node_had, this.resolve_had); //再次执行懒加载的方法},//绑定loadNode(node, resolve) {setTimeout(() => {if (node.level === 0) {this.node_had = node;this.resolve_had = resolve;return resolve([{label:this.name,id:this.id,region:0,type:this.dades.type,pindex_id:this.id,superior:'0'}]);}if(this.dades.type == ''){this.$Message.error('请先选择类型,在来加载绑定!');this.node_had.childNodes = []; //把存起来的node的子节点清空,不然会界面会出现重复树!this.loadNode(this.node_had, this.resolve_had); //再次执行懒加载的方法return false;}//加载this.$myhttp.post('admin/getbindingArrs',node.data,{'Content-Type': 'application/json'}).then(backdata=>{ // 异步执行成功后return resolve(backdata.data);});}, 300);},
axios的post请求obj数据转formdata
import axios from 'axios';
var myaxios = {};
myaxios.install = function(Vue){var axios_obj = axios.create({//支付接口baseURL: 'http://www.dade.com:9000',transformRequest: [function (data) {let ret = ''for (let it in data) {ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'}return ret}],headers:{'Content-Type': 'application/x-www-form-urlencoded'}})// axios_obj.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';Vue.prototype.$payhttp = axios_obj;
}
export default myaxios;
相关文章:
Kafka源码分析(四) - Server端-请求处理框架
系列文章目录 Kafka源码分析-目录 一. 总体结构 先给一张概览图: 服务端请求处理过程涉及到两个模块:kafka.network和kafka.server。 1.1 kafka.network 该包是kafka底层模块,提供了服务端NIO通信能力基础。 有4个核心类:…...
时间序列生成数据,TransformerGAN
简介:这个代码可以用于时间序列修复和生成。使用transformer提取单变量或者多变时间窗口的趋势分布情况。然后使用GAN生成分布类似的时间序列。 此外,还实现了基于prompt的数据生成,比如指定生成某个月份的数据、某半个月的数据、某一个星期的…...
2024/04/28
1...
差分包制作
1. 版本1; 将第一次编译产生的差分包:target_file 放置于代码根目录(和out 目录同级);并重命名为 ota 1 2.版本 2; 修改build文档,第二次编译产生产分包:target_file 放置于代码根目录(和out 目录同级);并重命名为 ota 2 3.指令:./build/tools/releasetools/ota_fr…...
保护企业财务报告,这几款防泄密软件做得到!
在日益增长的金融欺诈和网络攻击中,保护企业的财务报告是维持公司声誉和稳定运营的关键。财务报告包含了公司的敏感信息,如利润、收入、财务结构等,一旦泄露,可能会对公司造成不利影响。华企盾DSC数据防泄密系统为企业提供了全面的解决方案,确保财务报告的安全性和机密性。…...
从零入门区块链和比特币(第三期)
欢迎来到我的区块链与比特币入门指南!如果你对区块链和比特币感兴趣,但不知道从何开始,那么你来对地方了。本博客将为你提供一个简明扼要的介绍,帮助你了解这个领域的基础知识,并引导你进一步探索这个激动人心的领域。…...
vue教程
vue window本地保存Local Storage 保存:window.localStorage.setItem(名,值); window.localStorage.setItem(token,backdata.data[2]); 查询:window.localStorage.getItem(名); window.localStorage.getItem(token); 删除:window.localStor…...
认识哈希表
作者:~小明学编程 文章专栏:Java数据结构 格言:目之所及皆为回忆,心之所想皆为过往 目录 为什么我们需要哈希表? 哈希表的原理 什么是哈希值 冲突 负载因子 解决冲突 闭散列 开散列/哈希桶 代码实现 不考虑…...
Vue学习:Hello小案例
使用Vue的目的:构建用户界面(需要使用容器 摆放这个界面的内容) favicon.ico:1 GET http://127.0.0.1:5500/favicon.ico 404 (Not Found) 没有页签图标 在者服务器中 http://127.0.0.1:5500没有/favicon.ico 强制刷新网页:s…...
IDEA创建Java Web项目
✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…...
C++11中可变参数模板使用
在看同事编写的代码,发现有如下的代码,因为没用过,所以查了一下这是什么语法,通过查询资料知道了这是C11中增加的可变参数模板。 template<class T, class ...Args> bool GetValue(T &value, Args &&...args) c…...
MySQL 中的 sql_mode 选项以及配置
MySQL 中的 sql_mode 选项以及配置 目录MySQL 中的 sql_mode 选项以及配置一、查询与设置 sql_mode1、查询 sql_mode2、设置 sql_mode(1)通过命令设置(2)在配置文件中设置二、sql_mode 支持的模式1、ANSI 模式(宽松模式…...
【C语言航路】第六站:指针初阶
目录 一、指针是什么 二、指针和指针类型 1.指针类型的意义 2.指针-整数 3.指针解引用 三、野指针 1.野指针的成因 (1)指针未初始化 (2)指针越界访问 (3)指针指向的空间释放 2.如何规避野指针 &a…...
从 JPA 2.x 迁移到 3.0
我最近收到了很多关于JPA 3.0的问题,由于EclipseLink和Hibernate现在提供了对它的全面支持,现在是时候仔细看看规范的最新更新了。作为从Java EE到Jakarta EE转换的一部分,Java Persistence API(JPA)更名为Jakarta Per…...
Allegro如何锁定器件操作指导
Allegro如何锁定器件操作指导 Allegro上可以锁定器件,避免误操作被移动,具体操作如下 选择fix命令 Find选择Symbols 框选需要锁定的器件 可以看到器件被锁住了 除了这个方法之外,还有另外一种方法锁定器件,选择edit-property Find选择Symbols...
第三章:SpringBoot的配置文件-核心技术
目录 1、文件类型 1.1、properties 1.2、yaml 1.2.1、简介 1.2.2、基本语法 1.2.3、数据类型 1.2.4、示例 2、配置提示 1、文件类型 1.1、properties 同以前的properties用法 1.2、yaml 1.2.1、简介 YAML 是 "YAML Aint Markup Language"(YA…...
Vue中的计算属性
计算属性:实际上是把vm中的属性进行计算加工,最后能够返回给页面一个结果,它是实时的,所以不能做异步操作。 细想一下,其实methods方法也能实现1中描述的现象,但是计算属性最大的优势是缓存!&a…...
HTML+CSS个人电影网页设计——电影从你的全世界路过(4页)带音乐特效
HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…...
业务开发时,接口不能对外暴露的解决方案
1.内外网接口微服务隔离 将对外暴露的接口和对内暴露的接口分别放到两个微服务上,一个服务里所有的接口均对外暴露,另一个服务的接口只能内网服务间调用。 该方案需要额外编写一个只对内部暴露接口的微服务,将所有只能对内暴露的业务接口聚合到这个微服务里,通过这个聚合…...
「点燃我,温暖你」用Python制作一个动态爱心效果
最近「点燃我,温暖你」这部剧非常火,讲述的是程序员的爱情故事。 其中陈飞宇饰演的男主李峋,在剧中用程序做出的爱心跳动效果,非常炫。 网上各个大佬也是纷纷给出看法,综合就是不太可能用C语言来实现的。 大概率是AE…...
初识猿如意开发工具
嗨,大家好,我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助,请支持一波。 希望未来可以一起学习交流。 一、初遇猿如意 第一次听说猿如意开发工具,于是抱着试试的心态,开始下载尝试。 首先是…...
PyTorch 2.0发布了,一行代码提速76%
PyTorch 官方:我们这次的新特性太好用了,所以就直接叫 2.0 了。 前段时间,PyTorch 团队在官方博客宣布 Pytorch 1.13 发布,包含 BetterTransformer 稳定版等多项更新。在体验新特性的同时,不少人也在期待下一个版本的推…...
栈的基本操作
一,自定义函数 #include<bits/stdc.h> using namespace std; const int N 1000;//N是常量 int s[N 1];//栈 int top;//栈顶的位置(栈内有多少个元素) //入栈 void push(int x){ //非满栈 if(top < N){ //将栈顶上移并存入 top…...
windows内核编程-文件操作
文章目录前言背景知识点介绍字符串内存分配与回收文件操作自旋锁win内核编程-日志实现文件操作的封装日志功能的实现简单的测试日志功能其他前言 本文完整代码见:demo/12-win-driver-log 我们必须先搞定,DebugView可以看到DbgPrintDbgPrint的输出。否则…...
Hadoop原理与技术——Linus命令行基本操作
点击链接查看文档 一、实验目的 Hadoop运行在Linux系统上,因此,需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作,为顺利开展后续其他实验奠定基础。 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 J…...
目标检测算法——YOLOv5/YOLOv7改进之结合特征提取网络RFBNet(涨点明显)
>>>深度学习Tricks,第一时间送达<<< 🚀🚀🚀NEW!!!魔改YOLOv5/v7目标检测算法来啦 ~ 计算机视觉——致力于目标检测领域科研Tricks改进与推荐 | 主要包括Backbone、Neck、Head、普通注意力机制、自注意力机制Transformer、Swin Transformer v2,各…...
anaconda使用系列教程--4)环境迁移
概述 跨平台尽量避免,比如windows和linux就不要跨平台,就在linux之间跨还是可以的 直接copy整体环境文件,适合于无法联网或网速不佳的新环境 anaconda最好是同版本的 迁移方法 使用requirement文件 A机器: pip freeze > …...
Kotlin高仿微信-第57篇-VIP管理列表
Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…...
贪心算法-- 纪念品分组
问题描述元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得的纪念品价值 相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给…...
java-php-net-python-代驾网站计算机毕业设计程序
java-php-net-python-代驾网站计算机毕业设计程序 java-php-net-python-代驾网站计算机毕业设计程序本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui、HTML、CSS、JS、JQ…...
简洁自增ID实现方案
简介 从数据库性能角度考虑,我们经常需要数字型的自增主键,有时候我们并不想用像MySQL自带的自增,因为从1开始很数据位数不一样,对有点强迫症的人来说,不是很友好。 另外,别人也容易根据这种从1开始的自增…...
JMeter入门教程(14)——场景设计
1.JMeter中场景设计是通过线程组来实现的 如图: 控制面板中各元素介绍: 名称:可以随意设置,最好有业务意义。 注释:可以随意设置,可以为空。 在取样器错误后要执行的动作:其中的某一个请求出错后…...
SVM 用于将数据分类为两分类或多分类(Matlab代码实现)
👨🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…...
转行软件测试我后悔了
很多时候,都在想当初做的转行软件测试行业的决定是对的吗?现在后悔还来得及吗? 记得在求职的时候,面试官经常问我:“为什么要选择软件测试工作?” 而我也会经常说一堆自己有的没的优势去应付。 工作这么久了&#x…...
k8s教程(15)-pod之亲和性与互斥性调度
文章目录01 引言02 pod亲和性调度与互斥性调度2.1 拓扑域2.2 举例2.2.1 参照目标pod2.2.2 pod的亲和性调度2.2.3 pod的互斥性调度03 其它04 文末01 引言 声明:本文为《Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)》…...
浅谈降维实操,一种用于处理特征的方式——后附Python代码
👦👦一个帅气的boy,你可以叫我Love And Program 🖱 ⌨个人主页:Love And Program的个人主页 💖💖如果对你有帮助的话希望三连💨💨支持一下博主 降维实操前言线性降维低…...
深度学习中的正则化——L1、L2 和 Dropout
正则化是一组技术,可以防止神经网络中的过度拟合,从而在面对来自问题域的全新数据时提高深度学习模型的准确性。 在本文中,我们将介绍最流行的正则化技术,称为 L1、L2 和 dropout。 文章目录1. 回顾:过拟合2.什么是正则…...
数据结构(王卓)(4)附:链表的销毁与清空
销毁 Status 销毁单链表(LinkList L) {LinkList p;while (L){p L;L->next;delete p;}return OK; } 运行逻辑: (1):设定一个指针,让指针指向链表的头指针L (2):让头指针等于头指针里面指向下…...
C++图书管理系统(管理员-读者)
C图书管理系统(管理员-读者) 一、设计一款文字式交互的图书管理系统,要求具备注册登录、浏览图书、借还图书等基本功能; 二、要求以外部文件的形式存储书籍信息、馆藏记录、借阅记录、用户信息等。【可参考提供的书籍清单】 三…...
永磁同步电机恒压频比(V/F)开环控制系统Matlab/Simulink仿真分析及代码生成到工程实现
文章目录前言一、 恒压频比(V/F)控制原理二、永磁同步电机恒压频比开环控制系统Matlab/Simulink仿真分析2.1.仿真电路分析2.1.1.恒压频比控制算法2.1.2.输出处理2.1.3.主电路2.2.仿真结果分析2.2.1.设定目标转速为1200r/min2.2.1.设定目标转速为变化值三…...
基于JSP网上书城的设计与实现
项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…...
java计算机毕业设计-学生宿舍故障报修管理信息系统-源程序+mysql+系统+lw文档+远程调试
java计算机毕业设计-学生宿舍故障报修管理信息系统-源程序mysql系统lw文档远程调试 java计算机毕业设计-学生宿舍故障报修管理信息系统-源程序mysql系统lw文档远程调试本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件…...
vue学习笔记——简单入门总结(四)
文章目录1.Vue3的特性和变化1.1.创建vue3项目1.2.分析main.js变化:1.3.setup--组合式api的开端1.4.ref函数和reactive函数:1.5.watch监视属性1.5.watchEffect函数1.6.vue3生命周期:1.Vue3的特性和变化 1.1.创建vue3项目 1.这里我们使用脚手架…...
数据结构与算法—数组栈和链表栈
数据结构与算法—数组栈和链表栈 🌈一览众山小数据结构与算法—数组栈和链表栈栈介绍栈图解栈实现数组实现栈实现思路实现代码单链表实现栈实现思路(图解)实现代码栈总结栈力扣栈介绍 栈,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算…...
【应用】Kubernetes
Kubernetesk8s 安装流程安装前配置安装 docker 以及 k8s 组件初始化 k8s 集群测试使用:安装 kubernetes-dashboardk8s 基础概念k8s 核心技术概念k8s 内部组件k8s 中的 IP 地址K8S 服务暴露的三种方式k8s 安装流程 k8s-masterk8s-node01k8s-node02192.168.86.140192…...
GEE:关系、条件和布尔运算
ee.Image对象具有一组用于构建决策表达式的关系、条件和布尔运算方法。这些方法可以用来掩膜、绘制分类地图和重新赋值。 本文记录了在GEE(Google Earth Engine)平台上的关系运算符和布尔运算符,分别应用到了三个不用的场景(筛选低…...
Java项目:SSM的KTV管理系统
作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 主要功能包括: 登陆页,房间信息,房间管理,开取房间,房间查询,会员管理,食物管理,查看订单,查询订单,查看房间消费使用情况等功能。…...
包装类-Wrapper
包装类的分类 针对八种基本数据类型相应的引用类型-包装类有了类的特点,就可以调用对应的类中的方法 装箱和拆箱 Java是一种面向对象的编程语言,学习Java时就被明确灌输了一个概念:OOP,即面向对象编程。一切皆对象。但是基本…...
计算机网络——运输层【重点】
运输层概述 概念 进程之间的通信 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时&…...
ADSP-21569/ADSP-21593的开发入门(上)
作者的话 ADI的SHARC系列DSP,目前已经出到5系列了,最新的一颗叫2159x,按照ADI的说法,这颗DSP的性能是21569的两倍,但又能和21569做P2P的替换,所以下面我们就以21593为例,写一点资料,…...
【Android App】在线直播之搭建WebRTC的服务端(图文解释 简单易懂)
有问题或需要源码请点赞关注收藏后评论区留言私信~~~ 一、WebRTC的系统架构 WebRTC(网页即时通信)是一个支持浏览器之间实时音视频对话的新型技术,WebRTC体系由应用于实时通信的编程接口和一组通信协议组成,已成为互联网流媒体通…...
x265 帧间预测
帧间编码入口函数: 从 Analysis::compressCTU 是ctu编码的入口函数,根据 slice 类型判断是 I 还是 BP,如果是BP则执行帧间编码函数 Analysis::compressInterCU_rdx_x::/*压缩分析CTU过程:1.为当前CTU加载QP…...
【sciter】安全应用列表控件总结
一、效果图 二、功能点 实现电脑文件拖拽进入到安全桌面,读取文件路径,生成应用。可以配置允许拖拽进入安全桌面的文件应用。点击添加图标,可以添加应用到安全桌面中。在安全桌面列表中每一个应用实现双击、失去焦点,获取焦点、右键事件在安全桌面列表中每一个应用可以实现…...
一篇文章让你搞懂Java顺序表
目录 一、 线性表的基本介绍 二、顺序表 1、顺序表的概念 2. 创建顺序表类(ArrayList) 2. 增加元素 3. 删除元素 4. 修改某个元素 5. 查找元素 Main类 在数据结构体系中我们将整个数据结构分为两类,一类是线性结构; 线性…...
小白必知必会的几个IP协议知识
小白必知必会的几个IP协议知识1.IP地址属于网络层协议2.路由控制3.数据链路的抽象化4.IP属于面向无连接型1.IP地址属于网络层协议 在计算机通信中,为了识别通信对端,必须要有一个类似于地址的识别码进行标识。 MAC地址是用来标识同一个链路中不同计算机…...
【45-线程的实现方式-线程池的创建方式-线程池的执行顺序-CompletableFutrue异步处理】
一.知识回顾 【0.三高商城系统的专题专栏都帮你整理好了,请点击这里!】 【1-系统架构演进过程】 【2-微服务系统架构需求】 【3-高性能、高并发、高可用的三高商城系统项目介绍】 【4-Linux云服务器上安装Docker】 【5-Docker安装部署MySQL和Redis服务】…...
ArcGIS Pro3.0软件破解版安装教程
软件名称:ArcGIS Pro 3.0 安装环境:Windows 软件大小:7.3GB 硬件要求:CPU2GHz,内存4G(或更高) 百度云下载链接 : https://pan.baidu.com/s/1CXy1MSwdQXdVnJoV2X422A 提 取 码 :r0w1 教学内…...
java 根据对象的boolean字段对集合进行排序
java 根据对象的boolean字段对集合进行排序 需求大概如下: 把boolean为true的排序到前面,false排序到后面 排序后, boolean为true的会在前面, 为false的会在后面 , isHasMaterial 为boolean类型 Data Builder public class MoguPoiBaseInfo {/*** 是否有…...
如何查看自己的公网IP?
我们在网络中,每一个设备都被分配了一个唯一的IP地址,用以区分和识别其他设备。公网IP地址是指可被公众访问的IP,是因特网上的全球唯一标识。当我们需要查看自己的公网IP时,可以采取以下几种方式。 使用命令行查看公网IP 在Windo…...
结构化查询语言(SQL)的作用
结构化查询语言(SQL)的作用 结构化查询语言(SQL)是一种专门用来管理关系型数据库的语言。它具有以下重要作用: 1. 数据库管理 SQL被广泛应用于数据库管理,包括创建数据库、表和视图,定义数据…...
visionTransformer window平台下报错
错误: KeyError: Transformer/encoderblock_0/MlpBlock_3/Dense_0kernel is not a file in the archive解决方法: 修改这个函数即可,主要原因是Linux系统与window系统路径分隔符不一样导致 def load_from(self, weights, n_block):ROOT f&…...
前端发送请求之fetch跟axios的区别
前端开发工程师在针对页面UI设计稿还原之后,还需要与后端开发工程师进行接口对接,发送请求获取后端接口数据后进行逻辑处理呈现给用户。 常见的发送请求的方式是:Fecth,Axios 以下概念来自AI Fecth与Axios的区别: AP…...