2016-12-28 7 views
3

は私のコードです:はVUEコンポーネント名前空間の再利用可能な関数を定義する方法ここ

Vue.component("ro-webview", { 
    props: ["src"], 
    template: `<div> 
<div> 
<div class="col-md-2 list-inline"> 
${this.getIcon("fa-arrow-left")} 
${this.getIcon("fa-arrow-right")} 
${this.getIcon("fa-refresh")} 
</div> 
<input class="col-md-10" :value="src"/> 
</div> 
<iframe class="col-md-12" :src="src"/> 
</div>`, 

    data: { 
    getIcon: function (iconName) { 
     return `<a class="btn btn-default" href="javascript:void(0)"><i class="fa ${iconName}" aria-hidden="true"></i></a>` 
    } 
    } 
}) 

クロームコンソールレイズ

Uncaught TypeError: this.getIcon is not a function 
    (anonymous function) 

getIconは、名前の競合が発生しますので、getIconを定義し、それを作る方法を定義します私のコンポーネントでのみ動作しますか?

答えて

2

次のように、methodsでメソッドを定義する必要があります。

Vue.component("ro-webview", { 
    props: ["src"], 
    template: `<div> \ 
     <div> \ 
     <div class="col-md-2 list-inline"> \ 
      <div v-html="getIcon('fa-arrow-left')" /> \ 
      <div v-html="getIcon('fa-arrow-right')" /> \ 
      <div v-html="getIcon('fa-refresh')" /> \ 
     </div> \ 
     <input class="col-md-10" :value="src"/> \ 
     </div> \ 
     <iframe class="col-md-12" :src="src"/> \ 
     </div>`, 
    methods: { 
     getIcon: function (iconName) { 
     return "<a class='btn btn-default href='javascript:void(0)'><i class='fa " + iconName + " aria-hidden='true'></i></a>" 
     } 
    } 
    }) 

を、あなたはテンプレートのコードでメソッドを呼び出すためにthisを必要といけません。

v-htmlも参照してください。

fiddleを参照してください。

+0

それは '$ {}は'更新の答えを参照してください@asullaherc ''文字列 – asullaherc

+0

になめらかに挿入意味するので、ES6では動作しません。 – Saurabh

0

別の方法が使用jsの匿名関数である:

(function() { 
    var getIcon = function (iconName) { 
    return `<li><a class="btn btn-default" href="javascript:void(0)"><i class="fa ${iconName}" aria-hidden="true"></i></a></li>` 
    } 
    Vue.component("ro-webview", { 
    props: ["src"], 
    template: `<div> 
<ul class="list-inline"> 
${getIcon("fa-arrow-left")} 
${getIcon("fa-arrow-right")} 
${getIcon("fa-refresh")} 
<li><input class="col-md-10" :value="src"/></li> 
</ul> 
<iframe class="col-md-12" :src="src"/> 
</div>` 
    }) 
})() 
関連する問題