v-bind:属性名="变量名"
v-on:事件名="函数名"
缩写模式:
:属性名="变量名"
@事件名="函数名"
示例:
- <input type="text" v-bind:disabled="isDisabled" v-on:change="change"/>
-
- <input type="text" :disabled="isDisabled" @change="change"/>
-
- <script>
- export default {
- data() {
- return {
- isDisabled: true
- }
- },
- methods: {
- change(event) {
- console.log(event)
- }
- }
- }
- script>
:[属性变量名]="变量名"
@[属性变量名]="函数名"
示例:
<input type="text" :[key]="isDisabled" @[eventName]="change"/>
通常会在main.js中注册全局的自定义指令。
主要语法:
Vue.directive(指令名,{ 钩子函数名称: 钩子函数 })
钩子函数:
钩子函数的参数:
name:指令名(不包含v-前缀)
value:绑定的指令值(例如v-my="value")
oldValue:指令绑定的前一个值(仅在update和componentUpdated 钩子中可用)
expression:字符串形式的指令值的表达式(例如v-my="1+1" => 值为:"1+1")
arg:传给指令的参数
modifiers:包含修饰符的对象
示例:
- // main.js
- // 自定义指令-防止重复点击
- Vue.directive('preventReClick', {
- inserted (el, binding) {
- el.addEventListener('click', () => {
- if (!el.disabled) {
- el.disabled = true;
- setTimeout(() => {
- el.disabled = false;
- }, binding.value || 3000);
- }
- });
- }
- });
-
- // template
- <el-button type="primary" @click="submit()" v-preventReClick>提交el-button>