2016-05-19 12 views
0

別のディレクティブの中からvモデル値を操作する最も良い方法は何ですか?Vue.js別のディレクティブのVモデル値を更新する

以下の例のように、ディレクティブパラメータと同じ変数を代入してtwoWayディレクティブを作成すると、動作するようになるだけです。

この例では、おそらくv-modelを省略することもできますが、それにアクセスして値を変更するエレガントな方法があるのでしょうか?

Vue.directive('addressLookup', { 
 
    twoWay: true, 
 
    bind: function() { 
 
    var _self = this; 
 

 
    this.el.addEventListener('keyup', function() { 
 
     _self.set(_self.el.value * 2); 
 
    }); 
 

 
    } 
 
}); 
 

 
new Vue({ 
 
    el: '#vue', 
 
    data: { 
 
    model: '' 
 
    } 
 
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.24/vue.js"></script> 
 

 
<div id="vue"> 
 
    <input type="number" v-model="model" v-address-lookup="model"> 
 

 
    <p>value: {{ model }}</p> 
 
</div>

答えて

0

あなたが達成したいのか、このですか?たとえば、gurghetため

Vue.directive('addressLookup', { 
 
    twoWay: true, 
 
    bind: function() { 
 
    var _self = this; 
 

 
    this.el.addEventListener('keyup', function() { 
 
     _self.set(_self.vm.model = _self.el.value * 2); 
 
    }); 
 

 
    } 
 
}); 
 

 
new Vue({ 
 
    el: '#vue', 
 
    data: { 
 
    model: '' 
 
    } 
 
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.24/vue.js"></script> 
 

 
<div id="vue"> 
 
    <input type="number" v-address-lookup> 
 

 
    <p>value: {{ model }}</p> 
 
</div>

+0

感謝。これは1つのオプションですが、vueインスタンスのモデル変数名をディレクティブにハードコードします。だから、私は何とかv-modelに割り当てられた価値を知りたいのです。 this.el.__ v_model ...にアクセスするためのオプションが1つあるようですが、bind関数では正しいアプローチであるかどうかはわかりません。 – Priit

関連する問題