目的
为了给页面按钮增加权限控制,所以想到使用到vue
里面的terminal
。
xxx.vue
<template>
<div class="">
<div id="modal"></div>
<div v-auth:modal @click='aa'>
<h1>header</h1>
<p>body</p>
<p>footer</p>
</div>
</div>
</template>
<script>
'use strict'
export default {
methods: {
aa() {
console.log(3);
}
}
}
</script>
directive
'use strict'
import Vue from 'vue'
var FragmentFactory = Vue.FragmentFactory
var remove = Vue.util.remove
var createAnchor = Vue.util.createAnchor
export default {
priority:0,
terminal: true,
bind: function () {
var container = document.getElementById(this.arg)
debugger
this.anchor = createAnchor('v-inject')
container.appendChild(this.anchor)
remove(this.el)
var factory = new FragmentFactory(this.vm, this.el)
this.frag = factory.create(this._host, this._scope, this._frag)
this.frag.before(this.anchor)
},
unbind: function () {
}
}
v-auth
这个指令已经注到全局了,所以别问我为啥没引用。指令的内容直接拷贝的官网例子(原文),但是运行报错。所以断点调试
如上图是没有这个id的,查看网页dom
发现文档里面什么都没有
结合自己对生命周期理解,我这边猜想上面这个<div id="modal"></div>
应该不属于spa中的元素吧?因为在组件编译
的时候是不会再dom
文档中有内容的,也就是官网的例子给一个思路其实不能用于特定的场景。
你
v-auth:model
的冒号错了, 如果你是直接复制的话.