我想我有点晚,但无论如何我发表了答案。
首先,您要做的不是双向数据绑定,双向数据绑定是如果您更改变量值,则元素的值会更改,反之亦然。
我建议你使用一个结构,以便你可以在任何你喜欢的地方使用它,这有点复杂,但看看这个简单的例子,具体到你想要做什么,你可以用一点时间来扩展: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