实现非常简单的j双向数据绑定
双向数据绑定指的就是,绑定对象属性的改变到用户界面的变化的能力,反之亦然。换种说法,如果我们有一个S对象和一
个属性,一旦我们赋了一个新值给s
输入框,输入一个新值就应该会使S对象的
在上就会显加新的姓实现非常简单的j双向数据绑定
双向数据绑定指的就是,绑定对象属性的改变到用户界面的变化的能力,反之亦然。换种说法,如果我们有一个S对象和一
个属性,一旦我们赋了一个新值给s
输入框,输入一个新值就应该会使S对象的
在上就会显加新的姓名了。冋样地,如果包含了一个输入用户姓名的属性做出相应的改变。
很多热门的框架客户端如,js或者jso都在最新特性上刊登了双向数据绑定。这并不意味着从零实现它很难,也不是说需要这些功能的时候,釆用这些框架是唯一的选择。下面的想法实际上很基础,可以被认为是步走计划:我们需要一个元素和属性相互绑定的方法我们需要监视属性和元素的变化我们需要让所有绑定的对象和元素都能感知到变化
还是有很多方法能够实现上面的想法,有一个简单有效的方法就是使用模式。这个思路很简单:我们使用数据特性来
为代码进行绑定,所有被绑定在一起的对象和元素都会订阅一个对象。只要对象或
者一个输入元素监听到数据的变化时,就会触发绑定到对象上的事件,从而其他绑定的对象和元素都会做出相
应的变化。
用j做一个简单的实现
对于事件的订阅和发布,用j
实现起来是非常简单的,接下来我们就是用
比如下面:
sj
pubSub=j
message=obje
//Listentoc
j
j
j
jss
s
ata-bind-<objebind-"+objec
geeventsonelbSub,sothat
switht
angeis
(thisssage,
opagateschanges
s
essage,function
js
s
对于上面这个实现来说,
下面是一个
模如型的最简单的实现方法:
}
});
returnuser;
}
现在我们如果想要将User模型属性绑定到UI上,我们只需要将适合的数据特性绑定到对应的HTML元素上。
//javascript
varuser=newUser(123);
("name","Wolfgang");
//html
<inputtype="number"data-bind-123="name"/>
这样输入值会自动映射至"user对象的name属性,反之
亦然。到此这个简单实现就完成啦!
不需要jQuery的实现
在如今的大多数项目里,可能已经使用TjQuery,因此上面的例子完全可以接受。不过,如果我们需要试着向另一个极端做,并且还删除对Query的依赖,那么怎么做呢?好,证实一下这么做并不难(尤其是在我们限制只支持E8及以上版本的情况下)。最终,我们必须使用一般的javascrip渎现一个定制的PubSub并且保留TDOM事件:
functionDataBinder(object_id){
//CreateasimplePubSubobject
varpubSub={
callbacks:{},
on:function(msg,callback){
t
实现非常简单的js双向数据绑定 来自淘豆网m.daumloan.com转载请标明出处.