V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yantianqi
V2EX  ›  程序员

vue 的一个问题

  •  2
     
  •   yantianqi · 2017-06-05 08:51:10 +08:00 · 3336 次点击
    这是一个创建于 2707 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <body>
    	<div id="app">
    		<button @click="add">添加</button>
    		<div id="side"></div>
    	</div>
    	<script>
    		new Vue({
    			el: '#app',
    			methods:{
    				add(){
    					var div = document.getElementById('side');
    					div.innerHTML='<button @click="show"></button>'
    				},
    				show(){
    					alert('123')
    				}
    			}
    		})
    	</script>
    </body>
    

    如上面的代码?
    其中由 js 插进去的 vue 有办法解析吗?
    因为有用到插件的时候,插件利用 js 把 html 代码插入到了页面

    13 条回复    2017-06-06 09:34:26 +08:00
    airyland
        1
    airyland  
       2017-06-05 09:02:53 +08:00 via iPhone
    不能
    AKI
        2
    AKI  
       2017-06-05 09:03:50 +08:00
    没办法解析,你可以把 dom 写进去,然后用一个 if 不就可以了么?
    Troevil
        3
    Troevil  
       2017-06-05 09:04:24 +08:00
    使用 v-if ,不要动态插入
    ldlood
        4
    ldlood  
       2017-06-05 09:09:13 +08:00
    为什么不用 v-show/v-if
    dnxbf321
        5
    dnxbf321  
       2017-06-05 09:15:52 +08:00
    forceUpdate 试试
    coo
        6
    coo  
       2017-06-05 09:24:15 +08:00
    Vue 提供了 v-html 功能。
    mufeng
        7
    mufeng  
       2017-06-05 10:09:23 +08:00
    v-if 就好了
    az8321550924
        8
    az8321550924  
       2017-06-05 10:14:37 +08:00
    你要明白什么是声明式语法
    Aresn
        9
    Aresn  
       2017-06-05 10:42:05 +08:00
    可以的。iView 项目的 2.0.0-rc.13 版本之前,Table 组件都是用这种方法来自定义渲染单元格内容。代码详见:
    https://github.com/iview/iview/blob/2.0/src/components/table/cell.vue
    但这种办法在某些情况下是存在问题的(比如计算属性),所以 rc.14 版本开始使用 Render 函数了。
    ExploreWay
        10
    ExploreWay  
       2017-06-05 11:00:07 +08:00
    正在学习 vue,楼主能问一下,express 和 vue 有什么关系,区别,联系吗?怎么结合在一起开发,有相关的案例或教程吗?新手,希望指导。
    wxsm
        11
    wxsm  
       2017-06-05 11:19:03 +08:00
    不行。不过就算可以,这种垃圾代码写出来良心不会痛吗。
    wly19960911
        12
    wly19960911  
       2017-06-05 11:45:11 +08:00
    @ExploreWay
    #10 express 是 nodejs 的一个后台服务器框架,区别不用说了,
    联系是每次改变你的代码内容都需要重新进行 webpack 打包,他们使用 express 去作为服务器运行你的 vue 应用,然后每次改变自动打包,通过服务器自动把改变发给你当前调试这个 vue 应用的浏览器,不用手动刷新或者手动 webpack 打包
    skadi
        13
    skadi  
       2017-06-06 09:34:26 +08:00
    强行写得话,你的 innerHTML 可以写[render]( https://cn.vuejs.org/v2/api/#render)
    不过更好的方法不是大家都说了么.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   953 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:30 · PVG 04:30 · LAX 13:30 · JFK 16:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.