2017-07-28 18 views
0

ハイパーリンクの動的URLを生成しようとしているため、ユーザーは特定の顧客ページにIDでナビゲートできます。vue js v-bindが機能しない?

方法:

<template> 
    <list baseurl="/ajax/admin/customers" ordering="id" paginationOffset="20" inline-template> 
     <div class="row"> 
      <loader :loading="loading"></loader> 
      <div class="col-sm-12" v-if="!loading"> 
       <div class="row"> 
        <div class="col-sm-6"> 
         <h4>Showing {{ pagination.total }} results</h4> 
        </div> 
        <div class="col-sm-6 "> 
         <!--This button calls the openCanvas method which then triggers the open-canvas event--> 
         <button @click.prevent="openCanvas()" 
           class="btn btn-default pull-right" id="newCustomer">New Customer 
         </button> 
        </div> 
       </div> 
       <table class="table admin-table"> 
        <thead> 
        <tr> 
         <th class=""> 
          ID 
          <a><i class="mdi mdi-sort" aria-hidden="true" 
            @click.prevent="order('id')" :class="{active: (orderBy == 'id')}"></i> 
          </a> 
         </th> 
         <th class=""> 
          Title 
          <a><i class="mdi mdi-sort" aria-hidden="true" 
            @click.prevent="order('first_name')" 
            :class="{active: (orderBy == 'first_name')}"></i> 
          </a> 
         </th> 
         <th class="hidden-xs"> 
          Account 
          <a><i class="mdi mdi-sort" aria-hidden="true" 
            @click.prevent="order('account')" 
            :class="{active: (orderBy == 'account')}"></i> 
          </a> 
         </th> 
         <th class="hidden-xs"> 
          Company 
          <a><i class="mdi mdi-sort" aria-hidden="true" 
            @click.prevent="order('company')" 
            :class="{active: (orderBy == 'company')}"></i> 
          </a> 
         </th> 
         <th class="hidden-xs"> 
          Email 
          <a><i class="mdi mdi-sort" aria-hidden="true" 
            @click.prevent="order('email')" 
            :class="{active: (orderBy == 'email')}"></i> 
          </a> 
         </th> 
         <th class="hidden-xs"> 
          Phone 
          <a><i class="mdi mdi-sort" aria-hidden="true" 
            @click.prevent="order('phone')" :class="{active: (orderBy == 'phone')}"></i> 
          </a> 
         </th> 
         <th class=""> 
          City 
          <a><i class="mdi mdi-sort" aria-hidden="true" 
            @click.prevent="order('city')" 
            :class="{active: (orderBy == 'city')}"></i> 
          </a> 
         </th> 
         <th class="hidden-xs"> 
          Country 
          <a> <i class="mdi mdi-sort" aria-hidden="true" 
            @click.prevent="order('country')" 
            :class="{active: (orderBy == 'country')}"></i> 
          </a> 
         </th> 
         <th class=""> 
          Created 
          <a><i class="mdi mdi-sort" aria-hidden="true" 
            @click.prevent="order('created_at')" 
            :class="{active: (orderBy == 'created_at')}"></i> 
          </a> 
         </th> 
        </tr> 
        </thead> 
        <tbody> 
        <tr v-for="item in items" :key="item.id"> 
         <td><a v-bind:href="generateCustomerUrl(item.id)" title="Navigate to Customer page"> 
          {{ item.id }} 
          </a> 
         </td> 
         <td v-text="fullName(item)"> 
         </td> 
         <td> 
          {{ item.type }} 
         </td> 
         <td> 
          {{ item.company }} 
         </td> 
         <td class="hidden-xs"> 
          {{ item.email }} 
         </td> 
         <td class="hidden-xs"> 
          {{ item.phone }} 
         </td> 
         <td class="hidden-xs"> 
          {{ item.city }} 
         </td> 
         <td> 
          {{ item.country }} 
         </td> 
         <td class="hidden-xs"> 
          {{ item.created }} 
         </td> 
        </tr> 
        </tbody> 
       </table> 
       <div class="row"> 
        <div class="pagination-container"> 
         <pagination :pagination="pagination" :offset="20"></pagination> 
        </div> 
       </div> 
      </div> 
     </div> 
    </list> 
</template> 

機能は

/** 
* Private methods for this vue class 
* 
**/ 
methods: { 
    clearSearch() { 
     this.filters.search = ''; 
     EventBus.fire('apply-filters', this.serializedFilter); 
    }, 
    generateCustomerUrl(id) { 
     return "/admin/customers/" + id; 
    } 
}, 

しかしVUE JSエラーが

vm.generateCustomerUrlが機能スタックトレースではありません

を言って、モジュールのメソッドで宣言されています補間を使わずにVue.js 2.0用に動的にURLを生成できますかation(無効になっている)。

+0

は、あなたの 'generateCustomerUrl'は計算されたプロパティですか?それを 'methods:'に移してください。そしてなぜあなたは 'v-bind 'を必要としますか? –

+0

'generateCustomerUrl()'関数を追加してください。 –

+0

@AndreyKudriavtsev – kaleeway

答えて

0

問題は、リストコンポーネントにプロパティとしてメソッドを渡す<list></list>

ソリューションの範囲内の一方で、親コンポーネントのメソッドを呼び出すようにしてしようと、Vue.jsにネストコンポーネントによるものであった

<list generateUrl=this.generateUrl></list> 
関連する問題