2017-02-07 5 views
2

私が取り組んでいる現在のプロジェクトでは、vuejsを広範囲に使用しており、いくつかの基本的な配列ヘルパー関数へのアクセスにLodashを活用しようとしています。計算されたプロパティは、次のようになりますLodashとVuejsの使用時に計算されたプロパティが更新されない

<button class="btn btn-xs" v-bind:class="appreciated" v-on:click="toggleAppreciate()"><i class="fa fa-heart"></i> Appreciate</button> 

:スタイルボタン私はVUEテンプレートに以下している「のような」単純にボタンをクリックする

appreciated: function() 
{ 
    return _.indexOf(this.global.userAppreciates, this.entity_id) > -1 ? 'btn-primary' : 'btn-default' 
} 

は、単純なAjaxのリクエストを送信し、サーバーが応答しますトグルステータスは「追加」または「削除」となります。私は、「感謝」の店舗を変異させるには、次のコードを使用しています:

if (response.data.type === 'added') 
{ 
    return this.global.userAppreciates.push(this.entity_id) 
} 

return _.pull(this.global.userAppreciates, this.entity_id) 

正常に動作するJavaScriptプレーンを使用して追加する方法を。 vuetoolsを見ると、userAppreciatesの要素数が更新され、ボタンの状態が変わっていることがわかります。ただし、Lodashの_.pullメソッドを使用して配列から要素を削除しても、要素がストアから削除されても、計算されたプロパティの状態は切り替えられません。私は、プレーンはJavaScriptを使用して、このような何かを行う場合は、しかし:

let index = this.global.userAppreciates.indexOf(this.entity_id) 
this.global.userAppreciates.splice(index, 1) 

店も更新されます - しかし変化状態とボタンクラスの変更を行います計算されたプロパティ。

Lodashがこれらのメソッドを処理して、Vuejsがプロパティの変更を受け付けないようにする方法がありますか?どんな説明も認められるでしょう。

答えて

0

すべての配列に関連する変更が反応しない可能性があります。反応性のあるドキュメント以下Docsリスト:

  • プッシュ()
  • ポップ()
  • シフト()
  • アンシフト()
  • スプライス()
  • ソート()
  • 逆()

上記の方法を使用し、上記の方法を使用して_.pullを実装することをお勧めします。

関連する問題