2016-12-13 18 views
1

vue.jsを初めて使用しています私はangularjsアプリを移行し始めています。私はvue cliを使って新しいsimple-webpackプロジェクトを生成しています。これにより、新しいwebpack + vueLoaderプロジェクトが作成されます。すべてがスムーズに進みましたが、今は問題があります。私の@clickイベントで私はVueのインスタンスデータの一部を変更しましたが、UIに反映されていません。 via Vue開発ツールを使って、インスタンスが正しく更新されているのを確認できます。@clickメソッドでデータを変更した後、vuejs UIが更新されない

export default{ 
    data() { 
     return { 
     page: { items: null} 
     } 
    }; 

         <div v-for="item in items" class="row-margin"> 
          {{item.checked}} 
          <input type="checkbox" v-model="item.checked"><span>{{item.title}}</span> 
         </div> 

と私は私のAJAXの成功コールバックのアイテムを更新:

this.items = response.items; 

私はvuejsはゲッターを使用してその反応性を実現し、したがって、他に何も必要ありません知っています。欠けている部分は何ですか?

助けてください。

大切にしてください。

答えて

0

items配列内の項目は、最初にcheckedプロパティを持っていません。 2番目のajax呼び出しでその値を設定すると、動的に追加されます。

アイテムがサーバーから取得されます。最初にサーバーの応答からこの小道具を設定したときにチェックされたプロパティを追加したとき、それは完全に機能しました。

は正しいプロセスですか?

0

あなたのajaxリクエストの結果が届いていますか?もしそうなら、あなたの部門で聴かれていますか?ない場合は、変更してみてください:Vue.jsからVUEのVM

の内側に宣言されていないプロパティを更新し、あなたは上記のコードで

this.page.items = response.items

TO

this.items = response.items;

#データhttps://vuejs.org/v2/api/#data

Vueインスタンスのデータオブジェクト。 Vueはプロパティをゲッター/セッターに再帰的に変換して反応性にします。一度観察されると、ルートデータオブジェクトに反応性プロパティを追加することはできません。したがって、インスタンスを作成する前に、すべてのルートレベルのリアクティブプロパティを事前に宣言することをお勧めします。

乾杯...

+0

項目は、オブジェクトの配列です。配列要素の1つのプロパティが変わったときに応答する必要があります。 –

+0

[Computed Properties and Watchers](https://vuejs.org/v2/guide/computed.html)についてはどうですか? – user2976753

+0

計算されたcantは反応的な権利ですか?毎回計算を実行する必要があります。もしそうなら、私はそれを避けることを好む。ウォッチャーと同様のアプローチ。私の答えを見てください、 'created'イベントで、私はajax呼び出しを行います。応答はvueインスタンスdata.items prop(vueインスタンス宣言時にnullとして作成されます)を設定します。 data.items配列内のオブジェクトはpropをチェックしていません。ユーザーが何かをクリックすると、サーバーに行き、チェックされた項目を取得し、ループを使用するとdata.items配列オブジェクトにtrue \ falseが設定されます。最初の応答でチェックした小道具をすべて追加すれば –

関連する問題