2017-04-10 10 views
0
のVモデルバインドされた値を変換

は、この例を考えてみましょう:がVue.js

<input type="text" v-model="value"> 
<span>Value is: {{ value }}</span> 

私が欲しいのは一つの形式で入力フィールドに値を提示する双方向変換機能を置くことですが、それを維持します別の形式のデータで最も単純な例は、数値を無効にすることです:ユーザーが5を入力した場合、データが実際に−5を受け取るようにしたいと思います。 Vue.js 1.0でこれを達成する最善の方法は何でしょうか?

+0

ので、あなたは、このような入力をフォーマットする意味、それは '5'を表示されますが、'です - 5? –

+0

@AmreshVenugopalええ、かなり。 – Greendrake

答えて

1

negValueを送って、それをサーバに送信します。

入力値が変更されるたびに、ウォッチャーは任意の方法でデータプロパティ値を更新します。入力表示値は同じままですが、データプロパティは新しい操作値を持ちます。 EXのために

new Vue({ 
    el: "#app", 
    data: { 
    value: 0, 
    display_value: 0 
    }, 
    watch: { 
     display_value: function (newValue) { 
      this.value = -parseInt(newValue); 
     } 
    } 
}) 

し、HTML:

<input type="text" v-model="display_value"> 
<span>Value is: {{ value }}</span> 

フィドル:https://jsfiddle.net/crabbly/30e6h4uj/

5

あなたはただそのために計算されたプロパティ書くことができます。

new Vue({ 
    el: "#app", 
    data: { 
    value: 0 
    }, 
    computed: { 
    negValue() {return -this.value} 
    } 
}) 

をそしてテンプレートは

<input type="text" v-model="value"> 
<span>Value is: {{ negValue }}</span> 

https://jsfiddle.net/adf2kLhe/

+0

これは、値の提示を否定するだけです。 'data.value'は否定されません。データがサーバー側にポストされ、それがマイナス記号が必要な場所であるため、データの提示ではなくデータを無効にする必要があります。 – Greendrake

+1

ちょうど 'value'の代わりに' negValue'を投稿しても問題はありません。 – gurghet

1

あなたが設定しウォッチャーを使用することができなったnegValue

new Vue({ 
    el: "#app", 
    data: { 
    value: 0, 
    negValue: 0 
    }, 
    watcher: { 
    value(value) {this.negValue = -value} 
    } 
}) 
012その後

<input type="text" v-model="value"> 
<span>Value is: {{ negValue }}</span> 

あなたはちょうどあなたがこのためにウォッチャーを使用することができます代わりにvalue.