2017-12-19 25 views
0

私はmyAppと呼ばれるVueインスタンスを持っています。私はmountedの間に呼び出されるloadPlannedAlertsと呼ばれるVue JSインスタンスにメソッドを持っています。これはAJAX呼び出しで、まずJSONデータを取得し、その後に追加します。データはキー値のペアを持つJSONオブジェクトで、{key: 'value, key2: 'value2}'の行に沿って見えます。私のHTMLでVue JSがHTMLで追加されたオブジェクトとプロパティを認識しない

loadPlannedAlerts: function() { 
     $.ajax({ 
      method: 'GET', 
      url: '/get-my-data', 
      success: function(data) { 
       myApp.messages = JSON.parse(data); 
       for (var i = 0; i < myApp.messages.length; i++) { 
        myApp.messages[i].findUser = ''; 
       } 
      } 
     }); 
} 

、私はこのメッセージデータを表示するv-forループを持っています。何らかの理由で

<div v-for="(message, index) in messages"> 
    <input type="text" name="user" v-model="message.findUser"> 
</div> 

、私は自分のブラウザのコンソールに追加findUserキーと値をプルアップすることができ、そして私も、私のブラウザの開発ツールVueのプラグインでそれを見ることができます。しかし、メッセージボックスに入力されたデータは、findUserのそれぞれにバインドされていません。

私には何かがありませんか、または私が見落としている操作の順序はありますか?私がそれを追加する前にデータに既に存在していたものはすべて罰金です。

UPDATE

私はそれに値を割り当て、その後、すべてのコンポーネントを変異させ、そしてそれがどのように見えるかの構築を完了していない正規のキーと値のペアのためのディケイド月のソリューションに従っている場合、それはうまく動作します。値がキーと値のペアを持つ別のオブジェクトであるキーと値のペアを割り当てようとすると、それでも機能しません。

答えて

1

myApp.messagesは、そのコンポーネントのdataオブジェクトで先に宣言されていますか?

新しいfindUserというプロパティを各メッセージに追加しているようです。 Vueはこれを検出できません(Change Detection Caveats参照)。ペイロードの前に変更して、それをコンポーネントに割り当てます(この時点で、Vueは反応するようにします)。

success: function(data) { 
    const messages = JSON.parse(data); 

    for (var i = 0; i < messages.length; i++) { 
    messages[i].findUser = ''; 
    } 

    // Do this last 
    myApp.messages = messages; 
} 
+0

私の状況ではうまくいくかどうかは確認できませんが、ちょっとしたテストを作成しただけで、実際にはうまくいきました。私は明日これを試していき、それがうまくいくならば、この答えを受け入れられるものとしてマークします。 – aCarella

+0

このソリューションは機能しますが、もう少し追加しようとすると失敗します。このパターンに従ってキーと値のペアを追加しようとすると、それは機能します。キーと値のペアを持つオブジェクトである値を持つキーを追加しようとすると、そのオブジェクトは認識されません。理由は分かりません。私が何を意味するのかを明確にする必要がある場合は、オリジナルの投稿を更新できます。 – aCarella

+0

それはうまくいくはずです。あなたのコードとテンプレートを見る必要があります。 –

関連する問題