2017-04-18 4 views
0

Vue.jsを使った実験2私は少し​​プロジェクトを作り、コンポーネントをインポートしようとしましたが、ブラウザに空のページがあります。私はこの例を試すために使う "拡張" したい:Vue.js "extend"の正しい使い方は何ですか?

import Vue from 'vue' 
import WorkZone from './components/WorkZone.vue' 
import App from './App.vue' 

var vm = new Vue({ 
    el: '#app', 
    components: { 
     'work-zone': WorkZone, 
     'app': App 
    } 
}); 

マイApp.vueファイル:

<template> 
    <div id="app"> 
    <work-zone></work-zone> 
    </div> 
</template> 

<script> 
    import WorkZone from './components/WorkZone.vue'; 
    export default { 
     name: 'app', 
     components: { 
      'work-zone': WorkZone 
     }, 
     data() { 
      return {} 
     }, 
     methods: {} 
    }; 
</script> 

マイWorkZone https://jsfiddle.net/xmqgnbu3/1/

は、だから私のmain.jsは次のようになります.vueファイル:

var WorkZone = Vue.extend({ 
    template: ` 
    <div id="work-zone"> 
     <div id="wrapper"></div> 
    </div>`, 
    data() { 
     return { 
      tabItems: [{ 
       title: 'Главная страница', 
       project: 'Текст главная страница', 
       done: false, 
      }], 
     }; 
    }, 
    methods: { 
     createTab: function(newTab) { 
      this.tabItems.push(newTab); 
     } 
    } 
}); 

考え方は後でボタン付きのサイドバーがあります。各ボタンは、ワークゾーンまたはページ上の他のコンポーネントに要素を追加します。私はこの機能(例えば "function addElem()")をどのコンポーネントでもアクセスできるようにしたいと思います。

+0

は、 'app'は、idを持つ要素を存在しますか? – Bert

+0

id = "app"のルートコンポーネントが表示されます。それは空です。今すぐ追加しようとしました Vue.component( 'work-zone'、WorkZone); '#app' テンプレート: するvar bizon =新しいヴュー({ ELにWorkZone.vueに 及び変更main.js '' 成分:{ アプリ 'ワークゾーン':WorkZone }、 }); WorkZoneが表示されましたが、コンポーネントのマウントに失敗しました:テンプレートまたはレンダリング関数が定義されていません。 – rinatoptimus

+0

ページのHTMLを表示できますか?次に、この場合は 'Vue.extend'は必要ありません。 WorkZone.vueファイルは、テンプレートセクションとスクリプトセクションを持つApp.vueファイルのように見えるはずです。 – Bert

答えて

0

main.js

var WorkZone = Vue.extend({ 
     template: ` 
     <div id="work-zone"> 
      <div id="wrapper"> 
      <ul v-for="item in tabItems"> 
      <li>{{ item.title }}</li> 
      </ul> 
      <button @click="createTab({title: 'Hello', project: 'World', done: false})">Create Tab</button> 
      </div> 
     </div>`, 
     data() { 
      return { 
       tabItems: [{ 
        title: 'Главная страница', 
        project: 'Текст главная страница', 
        done: false, 
       }], 
      }; 
     }, 
     methods: { 
      createTab: function(newTab) { 
       this.tabItems.push(newTab); 
      } 
     } 
    }); 

    var vm = new Vue({ 
     el: '#app', 
     components: { 
      'work-zone': WorkZone 
     } 
    }); 

HTMLファイル:ページmain.jsが稼働上

<div id="app"> 
    <work-zone></work-zone> 
</div> 
関連する問題