vue 的一个问题

2017-06-05 08:51:10 +08:00
 yantianqi
<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 代码插入到了页面

3351 次点击
所在节点    程序员
13 条回复
airyland
2017-06-05 09:02:53 +08:00
不能
AKI
2017-06-05 09:03:50 +08:00
没办法解析,你可以把 dom 写进去,然后用一个 if 不就可以了么?
Troevil
2017-06-05 09:04:24 +08:00
使用 v-if ,不要动态插入
ldlood
2017-06-05 09:09:13 +08:00
为什么不用 v-show/v-if
dnxbf321
2017-06-05 09:15:52 +08:00
forceUpdate 试试
coo
2017-06-05 09:24:15 +08:00
Vue 提供了 v-html 功能。
mufeng
2017-06-05 10:09:23 +08:00
v-if 就好了
az8321550924
2017-06-05 10:14:37 +08:00
你要明白什么是声明式语法
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
2017-06-05 11:00:07 +08:00
正在学习 vue,楼主能问一下,express 和 vue 有什么关系,区别,联系吗?怎么结合在一起开发,有相关的案例或教程吗?新手,希望指导。
wxsm
2017-06-05 11:19:03 +08:00
不行。不过就算可以,这种垃圾代码写出来良心不会痛吗。
wly19960911
2017-06-05 11:45:11 +08:00
@ExploreWay
#10 express 是 nodejs 的一个后台服务器框架,区别不用说了,
联系是每次改变你的代码内容都需要重新进行 webpack 打包,他们使用 express 去作为服务器运行你的 vue 应用,然后每次改变自动打包,通过服务器自动把改变发给你当前调试这个 vue 应用的浏览器,不用手动刷新或者手动 webpack 打包
skadi
2017-06-06 09:34:26 +08:00
强行写得话,你的 innerHTML 可以写[render]( https://cn.vuejs.org/v2/api/#render)
不过更好的方法不是大家都说了么.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/365963

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX