嵌套的vue.js实例/元素

keo*_*ogh 16 javascript mvvm vue.js

这可能听起来像一个真正的noob问题,但我对MVVM很新...甚至JS中的MVC,所以提前抱歉.

我正在玩vue.js,并且喜欢它到目前为止的简单性.但是对于我想要做的事情,我认为我需要以不同的方式去做.

我想将Vue实例/元素嵌套在彼此内部,但是当然,父级将在init上读取DOM时使用子级.

为了论证,下面是我的意思的一个例子,我没有做这样的事情,但这是举例说明我的意思的最简单方法:

<body>
    {{ message }}
    <div id="another">
        {{ message }}
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

然后我的JS例如是:

new Vue({
    el: "body",
    data: {
        message: "I'm the parent"
    }
});

new Vue({
    el: "#another",
    data: {
        message: "I'm the child"
    }
});
Run Code Online (Sandbox Code Playgroud)

结果将是:

<body>
    I'm the parent
    <div id="another">
        I'm the parent
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

现在我完全明白为什么它这样做,事实上,它应该这样做,但我的例子只是试图说明我将如何做这样的事情?

在我的现实生活项目中,我的身体上有一个v-class,当身体发生的事情发生变化时(在很多地方)但当然我的身体也会想要其他的vue实例.

我怎么去筑巢?是否有特色处理这个问题?我需要处理组件吗?或者,从子元素中获取正文(例如jQuery会使用$("body"))然后在Vue实例中操作它?

希望这个问题不是太愚蠢,有人可以指出我正确的方向.

谢谢

Fer*_*gal 7

想想组件. http://vuejs.org/guide/components.html

如上所示在主体上创建一个Vue实例,但嵌套在其中的任何东西都是一个组件.通过道具传递数据.


swi*_*ift 5

通过道具传递数据只是一种方法.嵌套组件和从父级继承也可以正常工作.

示例:http://jsfiddle.net/hajkrupo/3/

<encapsulated-component inline-template>
    <header>
        <cart-status></cart-status>
    </header>
    <cart></cart>
</encapsulated-component>
Run Code Online (Sandbox Code Playgroud)