我想我有點晚,但無論如何我發表了答案。
首先,您要做的不是雙向數據綁定,雙向數據綁定是如果您更改變量值,則元素的值會更改,反之亦然。
我建議你使用一個結構,以便你可以在任何你喜歡的地方使用它,這有點複雜,但看看這個簡單的例子,具體到你想要做什麼,你可以用一點時間來擴展:DEMO
首先你創建你的構造函數:你的構造create
,bind
,set
和get
的
var variable=function(){
this.variables={};
}
然後創建原型(方法)來創建一個新變種iable,將其綁定到一個元素,設置或更改變量的值,並最終得到了變量的值:
variable.prototype.create=function(name){
this.variables[name]={
elem:'',
value:'',
event:new Event(name+'Change')
};
}
variable.prototype.bind=function(name,element){
this.variables[name].elem=document.querySelector(element);
}
variable.prototype.set=function(name,val){
this.variables[name].value=val;
this.variables[name].elem.dispatchEvent(this.variables[name].event);
}
variable.prototype.get=function(name){
return this.variables[name].value;
}
那麼您創建結構的一個實例:
var binding=new variable();
創建變量,並將其綁定到輸入元素:
binding.create('myVar');
binding.bind('myVar','.input');
然後設置一個事件偵聽器的價值在你輸入的變化:
document.querySelector('.input').addEventListener('myVarChange',function(){
this.value=binding.get('myVar');
document.querySelector('#div1').innerHTML=binding.get('myVar');
});
那麼如果用戶輸入任何文字,我們將其設置爲可變:
document.querySelector('.input').addEventListener('input',function(){
binding.set('myVar',this.value);
});
,並最終改變按鈕的點擊變量的值:
document.querySelector('#btn1').addEventListener('click',function(){
binding.set('myVar','test');
});
只需調用'InputEvent的() ;'在你的'test1'函數中... https://jsfiddle.net/7g0vqwgh/3/ – NewToJS