2017-06-02 1 views
0

上では動作しません。 :動的な変更は、私がVUEファイルで作業してフォームを持っていvuejs入力

var instance = new Vue({ 
el: "#General", 
data: { 
    [...] 
    pattern: [] 
} 

と言われています。私はいつも「アクションa」をしています。私は 'アクションa'を行うたびに必要な値で適切なアラートを持っていますが、入力は0のままで動的に変更されません。

+0

'v-model =" amount "' amount '値に指定した値をすべて書き換えます。あなたの 'v-model'の使い方は間違っています。 1)あなたの「金額」はどこにありますか? 2) 'v-model' OR':value'のどちらかを使用してください。 – wostex

+0

@wostex私はvモデルを削除しても動作しません –

+0

私は 'pattern'がオブジェクトだと思います。プロパティが 'data'で定義されていない場合、' this.set(obj、prop、value) 'を使用して反応させる必要があります:https://vuejs.org/v2/api/#vm-set助けてください - ダミーフェッチなどの実行可能なフィドルを提供してください。 – wostex

答えて

1

コードに問題があります。まず、のはあなたのAJAXリクエストを見てみましょう:あなたのdata応答の形式は

request.success(function(data){ 
    if(data['pattern']==='yes'){ 
     this.pattern=data[0]; 
     alert(this.pattern['value']); 
    } 
}) 

は何ですか?あなたがdata['pattern']で何かをチェックしている、そして、あなたはあなたが次にdata[0]

を呼び出すthis.pattern何かに関連付けしようとしているので、@thanksdの回答で述べたように、あなたはあなたのAJAXコールバックで間違ったthisを参照している、あなたが作成する必要がありますself変数:

var self = this 

var request = $.ajax({ 
    url: '{{ path ('home') }}promos/pattern/'+value, 
}) 

request.success(function(data){ 
    if(data['pattern']==='yes'){ 
     self.pattern=data[0]; 
     alert(this.pattern['value']); 
    } 
}) 

は最後に、あなたが書く:

<input type="number" class="form-control" v-model="amount" v-bind:value="pattern['value']"]> 

だから、いくつかのミスがここにあります。まず、ここでは何もしない行末に]があります。

第2に、あなたはv-bind:valueを使用していますが、これは応答するものではありません。この入力を応答させるには、v-modelを使用し、入力値を変更する場合はamountの値を設定する必要があります。

希望します。

+0

技術的には、 'v-bind:value'は'pattern'プロパティの変化に対応することができます。入力の値を変更しても 'pattern'プロパティは更新されません。 – thanksd

+0

mmmわかりませんが、私がフィドルでテストしたとき、 'value'は応答しません:https://jsfiddle.net/8dvggzhc/' v-model'を取り除いた場合を除いて – Hammerbot

+0

ええ、なし'v-model'は私の言うことです。 「v-model」は単に「v-bind:value = "something" v-on:input = "something = $ event.target.value" 'の略語であるから、 。 – thanksd

1

3つのこと:あなたのsuccessハンドラ内

  1. thisは、Vueのインスタンスを参照していません。ハンドラのスコープの外に参照を設定し、それを代わりに使用する必要があります。

  2. successコールバックを最初にjQueryのajaxメソッドにチェーンすることはできません。これは、呼び出しに渡されたパラメータオブジェクトのプロパティとして定義されています。 (たぶん、あなたは間違った上でコードをコピーした?)

  3. は、あなたが入力の値は、次のようになりますv-bind:value="pattern"

あなたのコードに縛ら値を反映したい場合はv-model="amount"を取り除く必要があります。

let self = this; // set a reference to the Vue instance outside the callback scope 

var request = $.ajax({ 
    url: '{{ path ('home') }}promos/pattern/'+value, 
    success: function(data) { // success handler should go in the parameter object 
    if (data['pattern']==='yes') { 
     self.pattern=data[0]; 
     alert(this.pattern['value']); 
    } 
    } 
}) 
関連する問題