如何让 Vue.js 处理新加的 dom

2018-09-15 12:37:32 +08:00
 ioioioioioioi

比如,一下代码,是用 Modal 弹出, 点击 Sumit 没有效果。

<script>
new Vue({
    el: '#pop-form',
    methods: {
        submit() {
            alert('hi')
        }
    },
})
<script>
<div id='pop-form'>
<button @click="submit">Submit</button>
</div>
4065 次点击
所在节点    Vue.js
13 条回复
lianyue
2018-09-15 13:16:41 +08:00
js 放 html 尾部
coolzjy
2018-09-15 13:38:17 +08:00
又是一个不学基础就上框架的……
ioioioioioioi
2018-09-15 13:54:06 +08:00
@coolzjy 你厉害,你牛逼
mkeith
2018-09-15 14:08:59 +08:00
先去看教程,vue 不是你这样用的
SilentDepth
2018-09-15 14:22:27 +08:00
确实是一个基础问题。

浏览器解析 HTML 文档是顺序方式,遇到 script 直接解析执行,执行完毕后再继续解析下面的 HTML 内容。你的代码里,先 script,于是 Vue 就开始初始化了,然而这个时候它尝试找一个 #pop-form 元素却找不到(因为这个元素此时还没有被浏览器解析),所以就不正常了。正是因为这个,所以才有了一个常见实践就是脚本都放到 body 底部,保证需要用到的 HTML 元素已经被解析。

如果必须要保证这个 HTML 元素顺序,监听 window 的 load 事件然后在回调里初始化 Vue 实例。这也是 jQuery 的常见实践。
ioioioioioioi
2018-09-15 14:31:17 +08:00
@SilentDepth 放到下面也不行。 是这样的,要做个全局函数,onclick 的时候执行:请求服务器获取 form,form 里有独立的 html 和 Vue.js 。jQuery 可以用$.getScript,但是 Vue 好像不行。
ioioioioioioi
2018-09-15 14:36:55 +08:00
@SilentDepth 好吧,$.getScript 可以的。
orange1818
2018-09-15 14:43:55 +08:00
前端开发群补点人,群号:157156558
FEDT
2018-09-15 14:51:55 +08:00
二楼说的没毛病,你也回的没毛病,他确实比你厉害比你牛逼
Kilerd
2018-09-15 14:58:18 +08:00
同意楼上说的,2 楼说得没错。没有 MVVM 基础就先了解一下 MVVM 框架是怎么处理这些情况的。

当然,你说的也没错,谁又规定在 MVVM 里面只能用他那套规则呢? 对吧。

不过,他确实比你厉害。
ioioioioioioi
2018-09-15 15:05:12 +08:00
@FEDT
@Kilerd So ...
introom
2018-09-15 16:09:57 +08:00
@ioioioioioioi 你让我开心地笑了
heww
2018-09-15 16:57:07 +08:00
新手或者不是新手找人帮助时态度要诚恳一点儿!

二楼说的没错,这个问题的确是基础知识,和 vue 半毛钱关系都没有。

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

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

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

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

© 2021 V2EX