双向数据绑定

<textarea type="number"  data-bind-123="name" /></textarea><br><br>
<textarea type="number"  data-bind-456="name1" /></textarea>
<script src="http://cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script>
<script>
// object_id 对象id
function DataBinder(object_id){
  //使用jQuery对象做一个简单订阅
  var pubSub=jQuery({});
  var data_attr="bind-"+object_id,
    message=object_id+":change";
  //监听change事件
  jQuery(document).on("change","[data-"+data_attr+"]",function(eve){
    var $input=jQuery(this);
 	//触发事件
    pubSub.trigger(message,[$input.data(data_attr),$input.val()]);
  });
  //
  pubSub.on(message,function(evt,prop_name,new_val){
  	//
    jQuery("[data-"+data_attr+"="+prop_name+"]").each(function(){
      var $bound=jQuery(this);
      if($bound.is("")){
        $bound.html(new_val);
      }else{
        $bound.html(new_val);
      }
    });
  });
  return pubSub;
}
//
function User(uid){
  var binder=new DataBinder(uid),
    user={
      attributes:{},
      set:function(attr_name,val){
        this.attributes[attr_name]=val;
        binder.trigger(uid+":change",[attr_name,val,this]);
      },
      get:function(attr_name){
        return this.attributes[attr_name];
      },
      _binder:binder
    };
  // Subscribe to PubSub
  binder.on(uid+":change",function(evt,attr_name,new_val,initiator){
    if(initiator!==user){
      user.set(attr_name,new_val);
    }
  });
  return user;
}
//
var user=new User(123);
user.set("name","Wolfgang");
//
var user1=new User(456);
user1.set("name1","Wolfgang789");
//
console.log(user.get("name"));
console.log(user1.get("name1"));
</script>

通过change事件来实现,1.试图端change触发修改服务端dade, 服务端dade修改触发change修改页面。

时间: 2024-11-16 16:30:02

双向数据绑定的相关文章

双向数据绑定和单项数据绑定的认识

参考文章: https://segmentfault.com/q/1010000002511449/a-1020000002514653 https://www.zhihu.com/question/49964363/answer/136022879 单向数据绑定:指的是我们先把模板写好,然后把模板和数据(数据可能来自后台)整合到一起形成HTML代码,然后把这段HTML代码插入到文档流里面. 单向数据绑定缺点:HTML代码一旦生成完以后,就没有办法再变了,如果有新的数据来了,那就必须把之前的HT

vue双向数据绑定原理探究(附demo)

昨天被导师叫去研究了一下vue的双向数据绑定原理...本来以为原理的东西都非常高深,没想到vue的双向绑定真的很好理解啊...自己动手写了一个. 传送门 双向绑定的思想 双向数据绑定的思想就是数据层与UI层的同步,数据再两者之间的任一者发生变化时都会同步更新到另一者. 双向绑定的一些方法 目前,前端实现数据双向数据绑定的方法大致有以下三种: 1.发布者-订阅者模式(backbone.js) 思路:使用自定义的data属性在HTML代码中指明绑定.所有绑定起来的JavaScript对象以及DOM元

angularjs学习笔记--主html&amp;template html&amp;module&amp;template js、模块、控制器、双向数据绑定、过滤器

// Register the `phoneList` component on the `phoneList` module, angular. module('phoneList'). component('phoneList', {...}); // Define the `phonecatApp` module angular.module('phonecatApp', [ // ...which depends on the `phoneList` module 'phoneList'

angular和vue双向数据绑定

angular和vue双向数据绑定的原理(重点是vue的双向绑定) 我在整理javascript高级程序设计的笔记的时候看到面向对象设计那章,讲到对象属性分为数据属性和访问器属性,我们平时用的js对象90%以上都只是用到数据属性;我们向来讲解下数据属性和访问器属性到底是什么? 数据属性:数据属性包含一个数据值的位置,在这个位置可以读取和写入值. 访问器属性:访问器属性不包含数据值;他们包含一对getter和setter函数在读取访问器属性时,会调用getter函数,这个函数负责返回有效的值,在写

angularjs - 为何要双向数据绑定

最典型的场景应该属于表单 类似表单和表格之类的场景,展示与提交一般是同时存在的. 通常情况下,单向数据绑定即可解决业务需求,如数据库的内容绑定到html中展示到页面即可 但若需要设计提交功能,双向数据绑定就会发生很便捷的作用. 双向数据绑定指的是:当文本框(或其他绑定标签.控件)发生改变时,Model也会随之发生改变 这样的话.已更改的model可以立即提交无需通过繁琐的jquery获取dom和value操作 <!doctype html> <html ng-app="User

利刃 MVVMLight 3:双向数据绑定

上篇我们已经了解了MVVM的框架结构和运行原理.这里我们来看一下伟大的双向数据绑定. 说到双向绑定,大家比较熟悉的应该就是AngularJS了,几乎所有的AngularJS 系列教程的开篇几章都要涉及到,真的是很好用. 表达的效果很简单:就是在界面的操作对数据模型的修改能实时反映到数据:而数据的变更能实时展现到界面.即视图数据模型(ViewModel)和视图(View)之间的双向绑定和触发. 我们来操作一个试试看: 第一步:先写一个Model,里面包含我们需要的数据信息,代码如下: 1 ///

双向数据绑定与单向数据绑定

在react中是单向数据绑定,而在vue和augular中的特色是双向数据绑定.为什么会选择两种不同的机制呢?我猜测是两种不同的机制有不同的适应场景,查了一些资料后,总结一下. 一.各自优势 双向数据绑定给人的最大的优越感就是方便.当数据data发生变化时,页面自动发生更新.但是有一个缺点也是因为自动更新而导致的,因为这样你就不知道data什么时候变了,也不知道是谁变了,变化后也不会通知你,当然你可以watch来监听data的变化,但是这变复杂了,还不如单向数据绑定. 所以说按照方神的说法:Vu

AngularJs——双向数据绑定示例

最近在做Hybird App,接触到了AngularJs,感觉用起来蛮爽的,今天share下AngularJs的核心功能之一:双向数据绑定. 我们在页面中加入一个表单: <!DOCTYPE html> <html ng-app="userInfoModule"> <head> <meta name="content-type" content="text/html; charset=UTF-8">

Angular之双向数据绑定

---恢复内容开始--- angular最初进入前端开发人员视野的时候,给人以不可磨灭的印象之一就是它的双向数据绑定的实现.本篇章会先介绍如何使用此功能,然后在深入解释它的双向绑定的机制是如何实现的. angular中的data-binding指的是模型models和视图views之间的自动同步.angular实现双向绑定后,会让你觉得数据模型是页面中数据唯一的真实来源.当model改变后,视图反映改变,反之亦然.通俗的说,所谓的双向数据绑定,无非就是从界面的操作能实时反映到数据,数据的变更能实

AngularJS入门心得2——何为双向数据绑定

前言:谁说Test工作比较轻松,最近在熟悉几个case,差点没疯.最近又是断断续续的看我的AngularJS,总觉得自己还是没有入门,可能是自己欠前端的东西太多了,看不了几行代码就有几个常用函数不熟悉的.看过了大漠的视频,算是了解了AngularJS的一些优良特性.后来准备投身<AngularJS权威教程>,跟着它走,可是一来可能自己道行不够,二来,个人觉得这本书翻译的有些生硬以及一些瑕疵,比如: (1)9.2节:在指令中适用自作用域 (2)9.2节:在指令中适用自作用域 当然,以上都是一些瑕