Vue学习笔记
1、 属性和方法
var vm = new Vue({ el:"#app", data:{ num:10 } , methods:{ //方法 getAllNum(){ this.num++; } }, computed:{ //属性 (第一次加载会放在内存中) getNumPlus(){ return this.num++; } } });
2、自定义指令
<div id="app"> <p v-ace>{{num|price}}</p> </div> <script type="text/javascript"> //自定义指令,可以有方法,所有指令都要以 v- 开头 Vue.directive("ace",{ //el指元素"ace",binding 这个对象包含了指令的很多信息 bind(el,binding){ //el.innerHTML = "<b>ACE</b>"; var price = parseInt(el.innerText).toFixed(2); el.innerText = price; },
//被绑定的元素插入父节点时调用 inserted(){
} }); var vm = new Vue({ el:"#app", data:{ num:10 },
filters:{
price(values){
return parseInt(values).toFixed(2);
}
} }); </script>
运行结果:10.00
3、全局组件
<div id="app"> //1、如想要大写这里要加下划线 <!--<my-header></my-header>--> //2、都小写的正常调用 <myheader></myheader> </div> <script> //全局组件 //1、myHeader 大写方式 //Vue.component("myHeader",{ //2、都小写 Vue.component("myheader",{ template:"<h1>This is Header</h1>" }) var vm = new Vue({ el:"#app", data:{ } }); </script>
4、局部组件
<div id="app"> //局部组件 <hello></hello> <world></world> </div> <script> var vm = new Vue({ el:"#app", data:{ } , //局部组件 components:{ "Hello":{ template:"<b>Hello everyOne</b>" }, "world":{ template:"<b>world everyOne</b>" } } }); </script>
5、模板组件
如果说组件的template内容结构比较简单,可以直接写在template选项中;但是当自定义组件的template内容比较复杂的时候,直接写就不合适了,也容易出错,所以:
对于这种状况Vue给出了自己的解决方案:使用模板,使用Vue的内置template模板来包裹着模板内容
<template id="foreignerName"> <!-- <template/>标签内部被包裹着的内容必须有且只有一个根元素,在这里的根元素是ul --> <ul> <li v-for="item in nameArr">{{item}}</li> </ul> </template>
这个模板要写在Vue实例的外面,这里template的id属性的值是自定义的,配合js部分用来标识模板内容;但是有一点值得注意,那就是被template包裹着的内容有且只有一个根元素,在这里是ul元素
JS部分
Vue.component("my-haha",{//如果template模板内容比较复杂,那么就可以这样做 template:"#foreignerName",//对应于template中的id属性 data:function(){ return { nameArr:["Alice","Marry","Athena"] } } })
HTML部分
<div id="container" v-cloak> <h3>{{name}}</h3> <!-- 当自定义组件的template模板内容比较复杂的时候 --> <my-haha></my-haha> </div>
<script> //调用模板 Vue.component("my-haha",{ template:"#foreignerName" }); </script>
---------------------------------------------------------------------------------------------------
HTML
//调用模板 <div id="app"> <mytemp></mytemp> </div> //自定义模板 <template id="temp"> <div> this is Temp {{msg}} </div> </template>
<script> //调用模板 Vue.component("mytemp",{ template:"#temp", data(){ return {msg:"Hello world"} } }); var vm = new Vue({ el:"#app", data:{ msg:"Hello world" } }); </script>
script模板方法
//调用模板 <div id="app"> <mytemp></mytemp> </div> //自定义模板 <script id="scr" type="text/template"> <h1> this is script {{msg}} </h1> </script> <script> //调用模板 Vue.component("mytemp",{ template:document.getElementById("scr"), data(){ return {msg:"Hello world"} } }); var vm = new Vue({ el:"#app", data:{ msg:"Hello world" } }); </script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
2018-04-11 Excel 导出通用类
2018-04-11 新建DataTable添加列添加行
2017-04-11 Jquery 移除某一个div下面的所有img图片
2016-04-11 项目问题总结