2017-07-13 7 views
-1

マーカーをピックアップしてドロップすると、v-modelにデータを保存します。 console.logはうまくいきますが、this.latitudeは表示されず、隠しフィールドも塗りつぶされません。Vuejsがmarker.onからdataにデータを返します

これをどのように達成できますか?

<input type="hidden" name="lat" v-model="lat"> 

export default{ 
    data: function() { 
     return { 
      lat: '51.8778909' 
    }, 
    addMarker: function (lat, lng) { 
      var latlng = new L.LatLng(lat, lng) 
      marker = new L.marker(latlng, {draggable: 'true'}) 
      map.setZoom(19) 

      map.panTo(latlng) 
      marker.on('dragend', function (event) { 

       this.latitude = lat 
       console.log(lat); 
       ....... 
} 
+0

あなたのVueで「緯度」はどこに定義されていますか?また、あなたのコールバック( 'marker.on')の中で、' this'はVueではありません。 'これを正しく捕らえる必要があります。 – Bert

+0

@BertEvansどういう意味ですか? – Bas

+0

あなたのコードでは、あなたのコールバックに 'this.latitude = lat'を設定します。しかし、あなたのデータに定義された 'latitude'プロパティはありません。 – Bert

答えて

0

ソリューションであるため、それはおそらくです。

0

Reactivity in depthをご覧ください。

<input type="hidden" name="lat" v-model="lat" id="lat"> 

document.getElementById("latitude").value = position.lat; 

この方法では、隠しフィールドの値が満たされると、保存のためにポストすることができます:あなたのアプリが更新されていない場合は反応性の

+0

私はこれを私の例にどのようにして達成することができますか? – Bas

+0

モデルにプロパティを追加すると、モデルを更新するためにモデルを更新することはありません。これは既にバインドされているためです。ページの例を見てください。鍬あなたはtypescriptでそれを行います。わからない –

+0

私はdocument.getElementById( "latitude")で解決しました。value = position.lat; – Bas

関連する問題