2016-05-19 35 views
0

從另一個指令中操縱v模型值的最佳方法是什麼?Vue.js從另一個指令更新v模型值

只有這樣,我才能得到它的工作,如果分配相同的變量作爲指令參數,並作出下面的例子演示的雙向指令演示。

在這個例子中,我可能完全忽略了v-模型,但我仍然想知道是否有一種優雅的方式來訪問/修改它的值?

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

這是你想要達到什麼樣的?

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

感謝您的例子gurghet。這是一個選項,但它將vue實例模型變量名稱硬編碼到指令中。這就是爲什麼我想以某種方式獲得分配給v-模型的價值的原因。似乎有一個選項來訪問this.el .__ v_model ...在綁定函數中,但不確定這是否是正確的方法。 – Priit