vue在template的插值问题

<!DOCTYPE html>
<html lang="cmn-hans">
<head>
    <meta charset="utf-8">
    <meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1">
    <meta name="renderer" content="webkit">
    <!-- 必选 响应式  -->
    <script src="https://cdn.bootcss.com/vue/2.5.13/vue.min.js"></script>
    <title>Vue component组件</title>
</head>
<body>
    <h3>Vue component组件</h3>
    <hr>
    <div id="app">

        <!-- <local  :here="local"></local> -->
        <local  :here="local"></local>
            <remote></remote>

    </div>
    <script>
    var app = new Vue({
        el: "#app",
        data:{
            local:'china',
            remote:'USA'
        },
        // <!-- 定义局部组件 -->
        components: {
                        'remote':{
                        template:`<p>我是局部组件remote来自{{remote}}</p>`,
            },
            'local': {
                template: `
          <div style="color:green">
      我是局部组件local,来自{{here}}
  </div>
         `,
         //选项props 数值
     props:['here'],
            },
        }
    });
    </script>
</body>
</html>

控制台报错:
Property or method "remote" 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.
remote没有定义。

阅读 9.3k
2 个回答

这个remoteremote组件里面绑定的那个值,因为你没有传数据进去,这是我修改你那个之后的代码,直接复制粘贴你就知道哪里错了,希望能帮助到你:

<!DOCTYPE html>
<html lang="cmn-hans">
    <head>
        <meta charset="utf-8">
        <meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1">
        <meta name="renderer" content="webkit">
        <!-- 必选 响应式  -->
        <script src="https://cdn.bootcss.com/vue/2.5.13/vue.min.js"></script>
        <title>Vue component组件</title>
    </head>

    <body>
        <h3>Vue component组件</h3>
        <hr>
        <div id="app">

            <!-- <local  :here="local"></local> -->
            <local :here="local"></local>
            <remote :remote="remote"></remote>

        </div>
        <script>
            var app = new Vue({
                el: "#app",
                data: {
                    local: 'china',
                    remote: 'USA'
                },
                // <!-- 定义局部组件 -->
                components: {
                    'remote': {
                        template: `<p>我是局部组件remote来自{{remote}}</p>`,
                        props: ['remote']
                    },
                    'local': {
                        template: `
          <div style="color:green">
      我是局部组件local,来自{{here}}
  </div>
         `,
                        //选项props 数值
                        props: ['here'],
                    },
                }
            });
        </script>
    </body>
</html>
  <local  :here="local"></local>
            <remote></remote>
    </div>
    <script>
    var app = new Vue({
        el: "#app",
        // data:{
        //     local:'china',
        //   //  remote:'USA'
        // },
        data:function(){
                return{
                        local:'China',
                        remote:'USA_main'
                }
        },
        // <!-- 定义局部组件 -->
        components: {
           'remote':{
                        template:`<p>我是局部组件remote来自{{remote}}</p>`,
                         data:function(){
                              return {   remote:'USA_components' }
                        }
            },
            'local': {
                       template: `
          <div style="color:green">
      我是局部组件local,来自{{here}}
  </div>
         `,
         //选项props 数值
     props:['here'],
            },
        }
    });

最终输出 USA_components,用的是组件内部的数据。如果改成这样,希望输出外部的数据:

var app = new Vue({
        el: "#app",
        // data:{
        //     local:'china',
        //   //  remote:'USA'
        // },
        data:{
                        local:'China',
                        remote:'USA_main'
        },
        // <!-- 定义局部组件 -->
        components: {
           'remote':{
                        template:`<p>我是局部组件remote来自{{this.remote}}</p>`,
                        // data:function(){
                        //      return {   remote:'USA_components' }
                        // }
            },
            'local': {
                       template: `
          <div style="color:green">
      我是局部组件local,来自{{here}}
  </div>
         `,
         //选项props 数值
     props:['here'],
            },
        }
    });

没有报错,也没输出。想输出外部的数值,怎么弄?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题