2017-03-01 14 views
1

laravelアプリケーションの中でvueJSを使って遊んだことがあります。コンポーネント間のVue JSデータの可用性

ステップウィザードを作成しようとしていますが、いずれかのコンポーネント内のvue定義からデータにアクセスできません。

私が持っている:

new Vue({ 
    el: '#app', 

data: { 
    currentstep : 1, 
    ... 
    chosenName: "", 

をそしてchosenNameの値がempty stringある場合

<button class="btn btn-primary" v-on:click="nextStep()" :disabled="secondstep" v-if="firststep != true && laststep != true">Next</button> 

が無効になるように、私はchosenName

Vue.component('step-controls', { 内にアクセスできるようにしたいと思います

私はそれのようなものでなければならないこと想像したでしょう:

secondstep: function() { 
     return (this.currentstep == 2 && this.chosenName =='') 
}, 

が、chosenNamepropsの一つではありません。 propsアレイに追加する場合はどうすれば同期できますか?

リンクいじるしますhttps://jsfiddle.net/angelin8r/oxse2p3v/3/

答えて

2

this.chosenNameがあなたのフィドルを使用してデータを更新することができ、次は

<step-controls 
    v-for="step in steps" 
    :step="step" 
    :stepcount="steps.length" 
    :currentstep="currentstep" 
    @step-change="stepChanged" 
    :chosen-name="chosenName"> 
</step-controls> 
を変更作ら

および

props: ['step', 'stepcount', 'currentstep','chosenName'], 

chosenNameを親プロパティにバインドすると、親プロパティが更新されると自動的に更新されます。

+0

ちょうど私が欲しかった。魅力的な作品!私は今、関数へのデータの変更が自分のコードにどのような影響を与えるのでしょうか? https://jsfiddle.net/angelin8r/oxse2p3v/ –

+1

@AngelinCalu新しいVueを作成するときは、関数を使う必要はありません。 Vue.componentのように、コンポーネントを作成するときに関数を使用する必要があります。相違点の理由は、コンポーネントを複数回使用する可能性があるため、コンポーネントを使用しているときは一般に状態を分離したいからです。 – Bert

0

あなたの最初の問題は、あなたのVueエレメントのデータプロパティが機能する必要があるということです。この関数はcurrentStepとcurrentNameを持つオブジェクトを返します。 See the docs for reference

だから、あなたのコンポーネントは、次に

new Vue({ 
    el: '#app', 
    data() { 
    return { 
     currentStep : 1, 
     chosenName: "", 
    }; 
    }, 
}) 

ようになり、あなたがアクセスしthis.currentStepまたは

+0

私はあなたの提案を試みました。コンポーネントの内部で 'console.log(this.chosenName); 'で' selectedName'にアクセスすることはできません。あなたはフィドルにソリューションを追加できますか? –

関連する問題