初用vue遇到的一些问题
filters: {search(list) { es5var _self = this;//return list.filter(menu => menu.childs.name.join("").indexOf(this.searchVal) > -1);return list.filter(function(menu) {var lists = menu.childs;var arr = [];arr.push(menu.name)for (var i = 0, len = lists.length; i < len; i++) {arr.push(lists[i].name);}return arr.join("").indexOf(_self.searchVal) > -1;})},searchlist(list) { es6return list.filter(menulist => menulist.name.indexOf(this.searchVal) > -1);}},
ready: function() {var _self = this;$.ajax({url: 'url',dataType: 'json',success: function(data) {_self.menus = data.data.menu.childs;_self.user = data.data.user;},error: function(err) {console.log(err);}})},
router.start({data() {return {currentmenu: '',message: 'asdaaa',menus: [],user: {},searchVal: ''}},filters: {search(list) {var _self = this;//return list.filter(menu => menu.childs.name.join("").indexOf(this.searchVal) > -1);return list.filter(function(menu) {var lists = menu.childs;var arr = [];arr.push(menu.name)for (var i = 0, len = lists.length; i < len; i++) {arr.push(lists[i].name);}return arr.join("").indexOf(_self.searchVal) > -1;})},searchlist(list) {return list.filter(menulist => menulist.name.indexOf(this.searchVal) > -1);}},ready: function() {var _self = this;// console.log(env.api)$.ajax({url: 'url',dataType: 'json',success: function(data) {// console.log(data.data.menu.childs);// console.log(data.data.user);_self.menus = data.data.menu.childs;_self.user = data.data.user;},error: function(err) {console.log(err);}})},methods: {changeCurrent: function(curl) {// alert(this.message)this.currentmenu = curl;}},component: app
}, "#app");
$.ajaxFileUpload({url: 'url',type: 'post',secureuri: false, //是否启用安全提交,默认为falsefileElementId: 'imeiExcelUrl', //文件选择框的id属性dataType: 'json', //返回数据的类型success: function(data) { //服务器响应成功时的处理函数config.data.show = false;if (data.meta.code == '200') {window.location.reload();} console.log(data.meta);},error: function(data) { //服务器响应失败时的处理函数console.log(data);}});
(1)
<!-- 点击复制begin --><script type="text/javascript" src="/js/zclip/jquery.zclip.js"></script>
<!-- 点击复制end -->
(2)
$("#phone_number").zclip({path: "/js/zclip/ZeroClipboard.swf",copy: function(){return $(this).val();},beforeCopy:function(){/* 按住鼠标时的操作 */$(this).css("color","orange");},afterCopy:function(){/* 复制成功后的操作 */var $copysuc = $("<div class='copy-tips'><div class='copy-tips-wrap'>☺ 复制成功</div></div>");$("body").find(".copy-tips").remove().end().append($copysuc);$(".copy-tips").fadeOut(3000);}});
$('#img').fileupload({add: function(e, data) {var uploadErrors = [];var acceptFileTypes = /^image\/(gif|jpe?g|png)$/i;if (data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) {uploadErrors.push('传入的格式不对');}if (data.originalFiles[0]['size'].length && data.originalFiles[0]['size'] > 5000000) {uploadErrors.push('所选图片太大');}if (uploadErrors.length > 0) {alert(uploadErrors.join("\n"));} else {data.submit();}},url: env.api + "liveman/panorama/panora/cover",dataType: 'json',autoUpload: true,//成功done: function(e, data) {_self.flagImg = true;_self.dataObject.coverUrl = data.result.data;},//失败fail: function(e, data) {console.log(data);}});
<form method="post" name="testForm" id="showDataForm" enctype="multipart/form-data" v-bind:action="url" ><label for="video_file" class="labelText col-sm-4 text-right">视 频</label><div class="col-sm-2"><input type="file" id="video_file" name="video_file"></div><div class="col-sm-1"><button type="submit" class="submit" >提交</button></div></form>
$("#showDataForm").on('submit',function(event) {$("#showDataForm").ajaxSubmit(function(message) {// 提交表单的返回值// console.log(message);if(message.code == 0) {alert("视频上传成功");}else {alert('视频上传失败');}});return false; // 必须返回false,否则表单会自己再做一次提交操作,并且页面跳转});
//进度条函数
function videoUploadProgress(evt) {if (evt.lengthComputable) {var percentComplete = Math.round(evt.loaded * 100 / evt.total);_self.progressBar = percentComplete;}else {console.log(".......")}}//文件上传成功函数function videoUploadComplete(evt) {var response = JSON.parse(evt.currentTarget.response);if(response.code == 0){_self.flagVideo = true;alert("视频上传成功");}}//文件上传函数function uploadVideo(url) {var xhr = new XMLHttpRequest();var fd = new FormData();fd.append("show_form", document.getElementById('video_file').files[0]);xhr.upload.addEventListener("progress", function(){videoUploadProgress(event)}, false);xhr.addEventListener("load", videoUploadComplete, false);xhr.open("POST", url);console.log(url);xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");xhr.send(fd);}$("#submit").on('click',function(){uploadVideo(_self.url);});
<img v-bind:src="item.image">
v-model
绑定的value通常是静态字符串(对于勾选框是逻辑值):
[v-cloak]{
display:none;
}
<div v-cloak>{{message}}</div>
.staggered-transition {transition: all .5s ease;/*overflow: hidden;*/margin: 0;}.staggered-enter,.staggered-leave {opacity: 0;}
<li class=" treeview" v-for="menu in menus |search" v-bind:class="{'active': searchVal!=''||$index == activeMemuIndex}" transition="staggered" stagger="100">
<style scoped></style>
支持sass
<style scoped lang='sass'></style>
"scripts": {"start": "webpack-dev-server --inline","test": "webpack","build": "webpack"},
if (TARGET === 'start') {module.exports.plugins = [new webpack.DefinePlugin({'env': {api: '"kkk"' 测试环境}}),new TransferWebpackPlugin([{ from: 'exter' }], path.resolve(__dirname, "src")),new TransferWebpackPlugin([{ from: 'login' }], path.resolve(__dirname, "src"))]module.exports.devtool = '#source-map'} else {module.exports.plugins = [new webpack.DefinePlugin({'env': {api: '"kkk"' 发布环境}}),new TransferWebpackPlugin([ 文件拷贝{ from: 'exter' }], path.resolve(__dirname, "src")),new TransferWebpackPlugin([{ from: 'login' }], path.resolve(__dirname, "src"))]module.exports.devtool = '#source-map'
}
export default {props: {modal: {title: '',content: '',flag: '',id: '',show: false,num: ''},focusList: []},methods: {refresh: function() {this.deleteFocusSure();},deleteFocusSure: function(id) {//确定删除var _self = this;$.ajax({url: 'url',data: {id: _self.modal.id},success: function(data) {if(data.meta.code == 200) {for (let i = 0; i < _self.focusList.length; i++) {if(_self.focusList[i].id == _self.modal.id) {_self.focusList.splice(i,1);_self.modal.show = false;_self.$dispatch('focusList', _self.focusList); //通知}}}},err: function(err) {console.log(err);}});},},events: { //通知'refresh' () {this.refresh();}},
}
<modal-file :modal="modal" :focus-list="focusList"></modal-file>
import modalFile from './modalFile.vue';
export default {data() {return {focusList: [],modal: {}}},components: {modalFile},methods: {deleteFocus: function(id) {//删除this.modal = {show: true,title: '删除',content: '确定删除该数据?',flag: 1,id: id}},Preview: function(data,type,userid) {//预览var _self = this;if(type == 3 ) {$.ajax({url: 'ur',data: {liveid:data,type:3},success: function(data) {var activityId = data.data;_self.modal = {show: true,title: "直播预览",flag: 2,id: activityId,}}}); }} },
events: { //刷新// 分页组件传回的表格数据(这里即为服务器传回的数据)'data' (data) {this.focusList = data.data.data;console.log(this.focusList);},'focusList' (focusList) {//删除后的刷新this.focusList = focusList;}}
}
watch: {'selectedType': 'getPlaceholder'}
<!-- 表格分页组件 -->
<template><nav class="boot-nav"><ul class="pagination boot-page"><li><a href="javascript:void(0)" @click="wholePrevClick()"><span aria-hidden="true">第一页</span></a></li><li><a href="javascript:void(0)" aria-label="Previous" @click="onPrevClick()"><span aria-hidden="true">«</span></a></li><li v-for="page in pages" :class="activeNum === $index ? 'active' : ''"><a href="javascript:void(0)" v-text="page" @click="onPageClick($index)"></a></li><li><a href="javascript:void(0)" aria-label="Next" @click="onNextClick()"><span aria-hidden="true">»</span></a></li><li><a href="javascript:void(0)" @click="wholeNextClick()"><span aria-hidden="true">最后一页</span></a></li></ul><div class="page-total">共 <span v-text="pageTotal"></span> 页</div></nav>
</template><script>
export default {props: {// 页码pages: {type: Array,default: function () {return [1]}},// 每页显示个数len: {type: Number,default: 10},// 表格数据(数组)data: {type: Array,default: function () {return []}},// AJAX地址url: {type: String,default: ''},//当前页的字段currentPage: {type: String,default: ''},totalPages: {type: String,default: ''},totalName: {type: String,default: ''},// 显示页数pageLen: {type: Number,default: 10},// 总页数pageTotal: {type: Number,default: 1},// 参数内容param: {type: Object,default: function () {return {}}},//methodmethod:{type:String,default:'get'}},data () {return {activeNum: 0,first: -1,last: -1}},methods: {// 第一页wholePrevClick: function() {this.first = 1;var newPages = [];for (let i = 0; i < this.pages.length; i++) {newPages[i] = i +1;}this.pages = newPages;this.activeNum = 0;this.getData();},// 最后一页wholeNextClick: function() {this.last = this.pageTotal;var newPages = [];for (let i = 0; i < this.pages.length; i++) {newPages[this.pages.length-i-1] = this.pageTotal-i;}this.pages = newPages;this.activeNum = this.pages.length-1;this.getData();},pageMake: function(index) {let newPages = [];let len2 = parseInt(this.pages.length/2);if(this.pages[index] <= len2 || this.pageTotal <= this.pageLen || this.pages[index] > this.pageTotal-len2) {for (let i = 0; i < this.pages.length; i++) {newPages[i] = this.pages[i];}this.activeNum = index;}else if( this.pages[index] <= this.pageTotal-len2) {for (let i = 0; i < this.pages.length; i++) {newPages[i] = this.pages[index]-len2+i;}this.activeNum = len2;}this.pages = newPages;this.getData();},// 点击页码刷新数据onPageClick (index) {this.pageMake(index);},// 上一页onPrevClick () {// 当前页是否为当前最小页码if (this.activeNum > 0) {// this.activeNum = this.activeNum - 1;let index = this.activeNum -1;this.pageMake(index);} else {if (this.pages[0] !== 1) {let newPages = []for (let i = 0; i < this.pages.length; i++) {newPages[i] = this.pages[i] - 1}this.pages = newPagesthis.getData()}}},// 下一页onNextClick () {// 当前页是否为当前最大页码if (this.activeNum < this.pages.length - 1) {// this.activeNum = this.activeNum + 1let index = this.activeNum + 1;this.pageMake(index);} else {if (this.pages[this.pages.length - 1] < this.pageTotal) {let newPages = []for (let i = 0; i < this.pages.length; i++) {newPages[i] = this.pages[i] + 1}this.pages = newPagesthis.getData()}}},// 获取页码getPages () {this.pages = []// 比较总页码和显示页数if (this.pageTotal <= this.pageLen) {//console.log(this.pageTotal+"....."+this.pageLen)for (let i = 1; i <= this.pageTotal; i++) {this.pages.push(i)}} else {for (let i = 1; i <= this.pageLen; i++) {this.pages.push(i)}}},// 页码变化获取数据getData () {var _self = this;this.param[_self.currentPage] = this.pages[_self.activeNum];this.param.rows = this.len;if( this.first!= -1) {this.param[_self.currentPage] = this.first;this.first = -1;}else if (this.last != -1) {this.param[_self.currentPage] = this.last;this.last = -1;}$.ajax({url: this.url,method: this.method,data: this.param,dataType: 'json',success: function(data) {if(_self.totalName) {_self.pageTotal = Math.ceil(data.data[_self.totalName][_self.totalPages]/ _self.len);}else {_self.pageTotal = Math.ceil(data.data[_self.totalPages]/ _self.len);}if (_self.pages.length !== _self.pageLen || _self.pageTotal < _self.pageLen) {_self.getPages();}_self.$dispatch('data', data)},error: function(err) {// console.log(err);}});},refresh () {this.pages = [1]this.activeNum = 0this.getData()}},ready () {this.getData();this.getPages();},events: {'refresh' () {this.refresh();}}
}</script><style scoped>
.boot-select {float: left;width: 80px;
}.boot-nav {float: right;
}.boot-page {display: inline-block;margin: 2px 10px 0 20px;vertical-align: middle;
}.page-total {display: inline-block;vertical-align: middle;
}
</style>
< img :src="img"/>
data() {return {img: require('../../login/login/imgs/progress.gif') } }
this.$children[index]
template: <live-player v-ref:liverplayer :live-title="liveTitle" :live-src="liveSrc"></live-player>script: this.$refs.liverplayer
注意:如果v-ref:liverplayerM再用this.$refs.liverplayerM会取不到值(因为用了驼峰法吧)。
转载于:https://www.cnblogs.com/lhy-93/p/5741257.html
初用vue遇到的一些问题相关推荐
- vue 将字符串最后一个字符给替换_初尝VUE
VUE的两个版本 VUE分为完整版(vue.js)和非完整版(vue.runtime.js) 二者的区别在于完整版的VUE(vue.js)会包含一个编译器,由于这个编译器的存在,完整版VUE(vue. ...
- 【Vue】【Router】手动跳转用 this.$router.push() 时 $router 未定义的问题
初入Vue,手写路由跳转时的问题: toXxxRoute: () => {this.$router.push({'path': '/xxx', 'name': 'xxx'}) } 由于使用了箭头 ...
- 二、Vue基础语法学习笔记——事件监听v-on、条件判断(v-if、v-else-if、v-else、v-show)、循环遍历(v-for遍历数组对象,key属性、检测数组更新)、图书案例、双向绑定
四.事件监听 在前端开发中,我们需要经常和用于交互. 这个时候,我们就必须监听用户发生的时间,比如点击.拖拽.键盘事件等等 在Vue中如何监听事件呢?使用v-on指令 v-on介绍 作用:绑定事件监听 ...
- 【JS】正则表达式。以vue词法分析、句法分析为例
1,声明 其声明和其他的基本类型类似,都可以用字面量声明,或者包装类声明: console.log(/abc/g); // /abc/gconsole.log(new RegExp("abc ...
- Vue.js 框架从入门到精通,只需要它!
点击蓝字 关注我们 你还在一行一行低效代码吗?你还在不停地操作 DOM 吗?你的代码还会频繁出现 CSS.Javascript 配置文件冲突吗? Vue3 框架快速解决你的代码低效问题! 01 Vue ...
- 从零吃透 Vue.js 框架,这里全部有!
点击蓝字 关注我们 你还在一行一行低效代码吗?你还在不停地操作 DOM 吗?你的代码还会频繁出现 CSS.Javascript 配置文件冲突吗? Vue3 框架快速解决你的代码低效问题! 01 Vue ...
- 不变的就是变化本身(Vue学习笔记one)
奋斗是这么个过程,当时不觉累,事后不会悔.走一段再回头,会发现一个更强的自己,宛如新生. 你好,我是梦阳辰!期待与你相遇! 文章较长,切勿心急气躁,否则将一事无成! 学习Vue前,我们需要先了解一些M ...
- Vue项目开发中一些常见问题
问题汇总 问题:安装超时(install timeout) 方案有这么些: cnpm : 国内对npm的镜像版本 /* cnpm website: https://npm.taobao.org/ */ ...
- VUE 常见问题汇总
问题汇总 Q:安装超时(install timeout) 方案有这么些: cnpm : 国内对npm的镜像版本 /* cnpm website: https://npm.taobao.org/ */ ...
- v-for 获取数组key value_Vue之路 | 05von、vif、vfor
点击左上方"熊吱"关注我们吧! 1 事件监听 在开发中,需要监听用户发生的事件,如点击.拖拽.键盘操作等,在Vue中,使用v-on指令绑定事件监听器. v-on的语法糖为:@ v- ...
最新文章
- vb.net怎么调用fastreport报表_零编码制作报表可能吗?
- ArcGIS Engine 中的多线程使用
- mac python3打包成窗体程序_python3代码打包成mac的程序,没办法运行,各位大神请指导一下...
- IO流介绍、java常用的几个IO流类之间的区别,以及各自的用法、使用场景
- 【转】C# 中文URL编码
- java webpack_webpack将对象暴露为全局
- python选择题题库for、if_Python题目1:猜年龄(for、if else和where)
- 函数wait、waitpid、孤儿进程、僵尸进程
- Oracle导入dmp文件报12504,ORA-12504:TNS :监听程序在 CONNECT_DATA 中未获得SERVICE_NAME...
- java中解决request中文乱码问题
- 蓝桥杯省赛真题C++java2013-2019
- dojo mobile问题汇总
- c语言编写生日祝福语大全,过生日的祝福语
- convert bitset descriptor - cv::Mat
- 【好网】通信专业的大四研一研二看看:以求职经验教你选择导师专业和科研方向...
- 安大计算机学院李伟教授,安徽大学高教所研究生导师聘任仪式在我校举行
- PHP高效生成一个不重复随机数
- the markup in the document preceding the root element must be well-formed
- windows的navicat 连接 linux的mysql服务器问题汇总
- win10利用Dism修复系统