Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

7.5.2 内联模板演示代码 #124

Open
netuxi opened this issue Mar 8, 2020 · 1 comment
Open

7.5.2 内联模板演示代码 #124

netuxi opened this issue Mar 8, 2020 · 1 comment

Comments

@netuxi
Copy link

netuxi commented Mar 8, 2020

7.5.2 内联模板演示代码中子组件无法解析父组件中的 message 数据。以下是我的代码。

<!DOCTYPE html>
<html lang="zh-Hans">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>内联模板</title>
    <script src="./../../lib/vue.js"></script>
  </head>
  <body>
    <div id="app">
      <child-component inline-template>
        <div>
          <h2>在父组件中定义子组件的模板</h2>
          <p>{{ message }}</p>
          <p>{{ msg }}</p>
        </div>
      </child-component>
    </div>
    <script>
      Vue.component("child-component", {
        data: function () {
          return {
            msg: "在子组件声明的数据"
          }
        }
      });

      var app = new Vue({
        el: "#app",
        data: {
          message: "在父组件声明的数据"
        }
      });
    </script>
  </body>
</html>

下面是控制台打印的错误。

Property or method "message" is not defined on the instance but referenced during render.
Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property.

当我删除了 <p>{{ message }}</p> 之后,就没有了错误。我是 Vue 的初学者,我无法确定是否是书上的代码出了问题。对了,我的 Vue 版本为 2.6.11。 @icarusion

@Envythink
Copy link

你的代码没有错误,这样肯定会报错,因为message是在父组件内定义的,你现在直接用在子组件内肯定不行,除非在子组件内使用props的数组写法来进行接收,并在child-component组件内使用:message=message来进行传递就可以了。

<div id="app">
    <child-component inline-template :message="message">
        <div>
            <p>在父组件中定义子组件的模板</p>
            <p>{{ message }}</p>
            <p>{{ msg }}</p>
        </div>
    </child-component>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
    Vue.component('child-component',{
        props:['message'],
        data: function () {
           return {
               msg: "在子组件中声明的数据"
           }
       }
    });

    var app = new Vue({
        el:"#app",
        data: {
            message: "在父组件中声明的数据"
        }
    })
</script>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants