Javascript 嵌套的vue.js实例/元素
这听起来像一个真正的noob问题,但我对MVVM还很陌生。。。甚至是JS中的MVC,请提前道歉 我正在玩vue.js,到目前为止我喜欢它的简单性。但是对于我正在尝试做的事情,我认为我需要用一种不同的方式去做 我希望将Vue实例/元素嵌套在彼此内部,但当然,父级在init上读取DOM时将使用子级 为了便于论证,下面是我的一个例子,我不是在做这样的事情,但这是最简单的方法来举例说明我的意思:Javascript 嵌套的vue.js实例/元素,javascript,mvvm,vue.js,Javascript,Mvvm,Vue.js,这听起来像一个真正的noob问题,但我对MVVM还很陌生。。。甚至是JS中的MVC,请提前道歉 我正在玩vue.js,到目前为止我喜欢它的简单性。但是对于我正在尝试做的事情,我认为我需要用一种不同的方式去做 我希望将Vue实例/元素嵌套在彼此内部,但当然,父级在init上读取DOM时将使用子级 为了便于论证,下面是我的一个例子,我不是在做这样的事情,但这是最简单的方法来举例说明我的意思: <body> {{ message }} <div id="another
<body>
{{ message }}
<div id="another">
{{ message }}
</div>
</body>
结果将是:
new Vue({
el: "body",
data: {
message: "I'm the parent"
}
});
new Vue({
el: "#another",
data: {
message: "I'm the child"
}
});
<body>
I'm the parent
<div id="another">
I'm the parent
</div>
</body>
我是父母
我是父母
现在我完全理解了它为什么这样做,事实上,它应该这样做,但我的例子只是想说明我将如何做这样的事情
在我的现实生活项目中,我的身体上有一个v类,当身体中发生事情时(在许多地方)会发生变化,但当然,我的身体也需要其他vue实例来做其他事情
我该怎么做筑巢呢?vue中是否有处理此问题的功能?我需要处理组件吗?或者,从子元素中获取主体(例如,像jQuery使用$(“body”)一样),然后在Vue实例中操作它
希望这个问题不要太愚蠢,有人能给我指出正确的方向
谢谢想想组件。
如上所述,在主体上创建Vue实例,但其中嵌套的任何对象都是组件。通过道具传递数据。通过道具传递数据只是一种方法。嵌套组件和从父级继承也可以很好地工作 例如:
您可以使用
标记执行此操作。这里有一个例子
1.首先,您需要创建一个基本布局组件,如下所示。
您需要添加
标记。非常重要的一点是
标记上的name属性
var basicLayout = Vue.component("basic-layout", {
template: `
<div class="basic-layout">
<header>
<slot name="header"></slot>
</header>
<main>
<slot></slot>
</main>
<footer>
<slot name="footer"></slot>
</footer>
</div>
`
});
3.将此示例代码放入HTML文件中。
要在当前插槽中放置一些内容,只需在组件或标记中使用插槽
属性
<div class="app">
<basic-layout>
<my-header slot="header"></my-header>
<p>Content in <main> tag</p>
<p slot="footer">Content in footer</p>
</basic-layout>
</div>
主标签中的内容
页脚中的内容
4.结果如下:
<div class="app">
<div class="basic-layout">
<header>
<div class="header">
<ul>
<li>HOME</li>
<li>ABOUT</li>
<li>CONTACT</li>
</ul>
</div>
</header>
<main>
<p>Content in <main> tag</p>
<main>
<footer>
<p>Content in footer</p>
</footer>
</div>
</div>
- 家
- 关于
- 接触
主标签中的内容
页脚内容
请参阅Vue.js官方页面中的文档
点击链接了解更多信息
下面是中的示例,感谢您提及内联模板,解决了我的问题。非常感谢。
<div class="app">
<basic-layout>
<my-header slot="header"></my-header>
<p>Content in <main> tag</p>
<p slot="footer">Content in footer</p>
</basic-layout>
</div>
<div class="app">
<div class="basic-layout">
<header>
<div class="header">
<ul>
<li>HOME</li>
<li>ABOUT</li>
<li>CONTACT</li>
</ul>
</div>
</header>
<main>
<p>Content in <main> tag</p>
<main>
<footer>
<p>Content in footer</p>
</footer>
</div>
</div>