2016-10-30 89 views
0

我是VueJS的新手,我正在做一個跟隨教程的聊天。在本教程中,教授將V模型放入組件中。當我這樣做時,組件不會在屏幕上「呈現」,並且控制檯響應「文本未定義」,我無法在任何地方找到此問題,如果有人可以幫助我,我會很感激,跟隨我html和js。組件V-model錯誤(VueJS)

HTML

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Chat JS</title> 
    <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.min.css"> 
    <link rel="stylesheet" href="css/app.css"> 
</head> 
<body> 
<div class="container"> 
    <div class="row"> 
     <div id="app"> 
      <router-link to="/chat">Vá para o Chat</router-link><br> 
      <router-link to="/rooms">Vá para as Salas</router-link><br><br><br> 
      <router-view></router-view> 
     </div> 
    </div> 
</div> 
<script src="https://www.gstatic.com/firebasejs/3.5.2/firebase.js"></script> 
<script type="text/javascript" src="node_modules/jquery/dist/jquery.min.js"></script> 
<script type="text/javascript" src="node_modules/bootstrap/dist/js/bootstrap.min.js"></script> 
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script> 
<script type="text/javascript" src="node_modules/vue-router/dist/vue-router.min.js"></script> 
<script type="text/javascript" src="node_modules/vuefire/dist/vuefire.min.js"></script> 

<script type="text/javascript" src="app/app.js"></script> 

</body> 

</html> 

JS

var firebaseApp = firebase.initializeApp(config); 
var db = firebaseApp.database(); 



const chatComponent = { 
template: ` 
     <div class="panel panel-primary"> 
      <div class="panel-heading">Chat</div> 
      <div class="panel-body" style="height: 400px; overflow-y: scroll;"> 
       <ul class="chat list-unstyled"> 
        <li class="clearfix" 
        v-bind:class="{left: !isUser(o.email), right: isUser(o.email)}" v-for="o in chat.messages"> 
         <span v-bind:class="{'pull-left': !isUser(o.email), 'pull-right': isUser(o.email)}"> 
          <img v-bind:src="o.photo" class="img-circle"/> 
         </span> 

         <div class="chat-body"> 
          <strong>{{o.name}}</strong> 
          <p> 
           {{ o.text }} 
          </p> 
         </div> 

        </li> 
       </ul> 
      </div> 
      <div class="panel-footer"> 
       <div class="input-group"> 
        <input type="text" class="form-control input-md" placeholder="Digite sua Mensagem..."/> 
        <span class="input-group-btn"> 
         <button class="btn btn-sucess btn-md">Enviar</button> 
        </span> 
       </div> 
      </div> 
     </div> 
`, 
data: function() { 
return { 
    user: { 
     email: '[email protected]', 
     name: 'Jose Joao', 
    }, 
    chat: { 
     messages: [ 
      { 
       email: "[email protected]", 
       text: "Olá eu sou o Fulano", 
       name: "Fulano", 
       photo: "http://placehold.it/50/000FFF/fff&text=00" 
      }, 
      { 
       email: "[email protected]", 
       text: "Estou Joia, eu sou o Robo", 
       name: "Robo", 
       photo: "http://placehold.it/50/FFFFFF/fff&text=EU" 
      }, 
      { 
       email: "[email protected]", 
       text: "Tudo bem com voce", 
       name: "Robo", 
       photo: "http://placehold.it/50/FFFFFF/fff&text=EU" 
      } 
     ] 
    } 
}; 
}, 
methods:{ 
isUser:function(email){ 
    return this.user.email == email; 
} 
} 
}; 
const RoomsComponent = { 
template:` 
      <div class="col-md-12" > 
       <div class="col-md-4" v-for="o in rooms"> 
       <div class="panel panel-primary"> 
        <div class="panel-heading"> 
         {{ o.name }} 
        </div> 
        <div class="panel-body"> 
         {{o.description}}<br> 
        <a href="javascript:void(0)" @click="goToChat(o)">Entrar</a> 
        </div> 
       </div> 
      </div>     
       <div class="col-md-4"> 
       <input type="text" id="problem"/> 
       <ul> 

       </ul> 
       </div> 
      </div> 


`, 
firebase:{ 
array: db.ref('array') 
}, 
data: function() { 
return { 
    rooms: [ 
     {id: "001", name: "Duvidas", description: "Duvidas Gerais"}, 
     {id: "002",name: "Cadastros/Login", description: "Duvidas sobre Acesso"}, 
     {id: "003",name: "Planos", description: "Duvidas sobre os Planos"}, 
     {id: "004",name: "Creditos", description: "Duvidas sobre os Creditos"}, 
     {id: "005",name: "Modelos", description: "Duvidas sobre os Modelos"}, 
     {id: "006",name: "Envios", description: "Duvidas sobre os Envios"} 
    ] 
}; 
}, 
methods:{ 
goToChat: function(room){ 
    router.push('/chat/'+room.id) 
}, 
insertData: function(){ 
    this.$firebaseRefs.array.push({ 
     text: this.text 
    }); 
} 
} 
}; 

const routes =[ 
{ path: '/chat/:room', component: chatComponent }, 
{ path: '/rooms', component: RoomsComponent } 
] 
const router = new VueRouter({ 
routes 
}) 
const app = new Vue({ 
router 
}).$mount('#app') 

回顧,這個問題是在ID爲 「問題」 的輸入(以方便你)基本上像我說的,只是把一個V模型它的錯誤,如果有人知道,謝謝!

回答

0

您需要定義你的組件如下:

Vue.component('chat-component', { 
    template: `...`, 
    data: { 
     // your data 
    }, 
    methods: { 
     // your methods 
    }, 
    // and so on 
}); 

您只創建了JavaScript對象,而不是Vue的成分,在你的代碼示例以上。

您還可以檢查在計算器vue.js從以前的問題的jsfiddle的例子,它會引導你的語法創建Vue的部件,親子溝通等