vueJS 2、JavaScriptをコンポーネントに動的にバインドする方法

ステファン・パケ

テンプレート

<template v-for="(item, i) in items">
          <v-divider
            v-if="item.divider"
            class="my-4"
            :key="i"
          ></v-divider>
          <v-list-tile
            :key="i"
            v-else
            :to="item.to"
          >
            <v-list-tile-action>
              <v-icon>{{ item.icon }}</v-icon>
            </v-list-tile-action>
            <v-list-tile-content>
              <v-list-tile-title>
                {{ item.text }}
              </v-list-tile-title>
            </v-list-tile-content>
          </v-list-tile>
        </template>

スクリプトセクション:

export default {
    name: 'sideMenu',
    data () {
      return {
        toggleKeyboardShortcuts: false,
        items: [
          { icon: 'add', text: 'Create new question', to: '/question' },
          { divider: true },
          { icon: 'lightbulb_outline', text: 'Notes', to: '#' },
          { icon: 'touch_app', text: 'Reminders', to: '#' },
          { divider: true },
          { icon: 'settings', text: 'Settings', to: '#' },
          { icon: 'help', text: 'Help', to: '#' },
          { icon: 'keyboard', text: 'Keyboard shortcuts', events: { 'click': this.toggleKeyboardShortcutsDialog.bind(this) } },
          { icon: 'phonelink', text: 'App downloads', to: '#' }
        ]
      }
    },... more stuff, but not relevant for this question

さまざまな属性を渡すことができ、物事は適切にレンダリングされますが、このリストの項目がクリックされた場合に実行するJavaScript関数を渡すと、惨めに失敗します。そして、ダイアログをトリガーするためにこの動作が必要です(ルーターを使用してページにアクセスすることは機能します)

mackmack

@clickは必要なトリガーですが、@ clickはコンポーネントで定義されたメソッドのみを呼び出すことができます。

したがって、簡単なダーティは、items配列のインデックス値を受け入れるメソッド内の関数であり、メソッド内から、必要な実際の関数を呼び出します。

説明がわかりにくいため、簡単なペンを作成しました:https//codepen.io/anon/pen/QMpgGN?editors = 1111

html:

<div id="app">
  <template>
      <button v-for="(o, i) in items" @click="dynamicFunc(i)">
        {{ o.text }}
      </button>
  </template>
</div>

js :( vue-loaderなし)

new Vue({
  el: '#app',
  data() {
    return {
      items: [
        {
          text: "test",
          click: function() {alert("hi~")}
        }
      ]
    }
  },
  methods: {
    dynamicFunc(i) {
      this.items[i].click()
    }
  }
})

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

VueJS2で動的プロップを動的コンポーネントにバインドする方法

分類Dev

VueJSに子コンポーネントを動的に追加する

分類Dev

完全にコンパイルされたコンポーネントをVueJSのDOMに動的に追加する方法

分類Dev

コンポーネントをvuejsでバインドする方法は?

分類Dev

コンポーネントをvuejsでバインドする方法は?

分類Dev

VueJSコンポーネントでv-modelをバインドする方法

分類Dev

VueJSのコンポーネントを動的に変更する方法

分類Dev

Vuejs 2 でコンポーネントをインポートする方法

分類Dev

vuejs:コンポーネント内に画像をプリロードする方法

分類Dev

vuejs-小道具とイベントを動的コンポーネントに動的に渡す方法

分類Dev

VueJS同じ変数を同じコンポーネントの複数にバインドする

分類Dev

vuejsコンポーネントにJavaScriptコードを埋め込む方法は?

分類Dev

Vuejs2のjsonからコンポーネントを動的に作成する方法

分類Dev

子コンポーネントをVuejsに動的に登録する

分類Dev

Vuejs-コンポーネントをdivに動的にアタッチする

分類Dev

vuejsのWebサービスによって更新されるコンポーネントプロパティを正しくバインドする方法

分類Dev

VueJS + jQuery:Vue.jsでコンポーネントを動的に作成する

分類Dev

VueJSコンポーネントで動的にdivを追加および削除する

分類Dev

VueJs:カスタムコンポーネントに `v-on`をバインドして、既存のコンポーネントを置き換えます

分類Dev

#appの前にHTMLでコンポーネントを宣言する方法をVuejs

分類Dev

VueJS:contentEditabledivに絵文字コンポーネントを動的に埋め込む方法

分類Dev

Vuejs 2:コンポーネントから親にイベントを送信する

分類Dev

Laravel VueJSは、動的数量を製品リストコンポーネントの各入力にバインドします

分類Dev

VueJSコンポーネントに別のJavaScriptファイルをロードします

分類Dev

VueJSコンポーネントのFlatpickrにスタイルを適用する

分類Dev

ルーターでvuejsコンポーネントを適切に遅延ロードする方法

分類Dev

vuejsにコンポーネントをロードする前に画像をレンダリングします

分類Dev

コンポーネントVuejs2で動的データを宣言する

分類Dev

VueJSのコンポーネントにバインドされた関数呼び出しにカスタムパラメーターを追加する

Related 関連記事

  1. 1

    VueJS2で動的プロップを動的コンポーネントにバインドする方法

  2. 2

    VueJSに子コンポーネントを動的に追加する

  3. 3

    完全にコンパイルされたコンポーネントをVueJSのDOMに動的に追加する方法

  4. 4

    コンポーネントをvuejsでバインドする方法は?

  5. 5

    コンポーネントをvuejsでバインドする方法は?

  6. 6

    VueJSコンポーネントでv-modelをバインドする方法

  7. 7

    VueJSのコンポーネントを動的に変更する方法

  8. 8

    Vuejs 2 でコンポーネントをインポートする方法

  9. 9

    vuejs:コンポーネント内に画像をプリロードする方法

  10. 10

    vuejs-小道具とイベントを動的コンポーネントに動的に渡す方法

  11. 11

    VueJS同じ変数を同じコンポーネントの複数にバインドする

  12. 12

    vuejsコンポーネントにJavaScriptコードを埋め込む方法は?

  13. 13

    Vuejs2のjsonからコンポーネントを動的に作成する方法

  14. 14

    子コンポーネントをVuejsに動的に登録する

  15. 15

    Vuejs-コンポーネントをdivに動的にアタッチする

  16. 16

    vuejsのWebサービスによって更新されるコンポーネントプロパティを正しくバインドする方法

  17. 17

    VueJS + jQuery:Vue.jsでコンポーネントを動的に作成する

  18. 18

    VueJSコンポーネントで動的にdivを追加および削除する

  19. 19

    VueJs:カスタムコンポーネントに `v-on`をバインドして、既存のコンポーネントを置き換えます

  20. 20

    #appの前にHTMLでコンポーネントを宣言する方法をVuejs

  21. 21

    VueJS:contentEditabledivに絵文字コンポーネントを動的に埋め込む方法

  22. 22

    Vuejs 2:コンポーネントから親にイベントを送信する

  23. 23

    Laravel VueJSは、動的数量を製品リストコンポーネントの各入力にバインドします

  24. 24

    VueJSコンポーネントに別のJavaScriptファイルをロードします

  25. 25

    VueJSコンポーネントのFlatpickrにスタイルを適用する

  26. 26

    ルーターでvuejsコンポーネントを適切に遅延ロードする方法

  27. 27

    vuejsにコンポーネントをロードする前に画像をレンダリングします

  28. 28

    コンポーネントVuejs2で動的データを宣言する

  29. 29

    VueJSのコンポーネントにバインドされた関数呼び出しにカスタムパラメーターを追加する

ホットタグ

アーカイブ