分析boostrap tags-input组件并进行二次封装开发-3

news/2024/7/10 23:37:31 标签: jquery, boostrap

以上我们分析的编写jquery组件的一般思路

接下来我们需要针对编写的细节部分进行分析了

我们按照组件的使用时调用顺序进行分析

组件使用的方式在html中插入如下代码

<input type="text" value="Amsterdam,Washington,Sydney,Beijing,Cairo" data-role="tagsinput" />

而组件的启动代码如下

$(function() {
    $("input[data-role=tagsinput], select[multiple][data-role=tagsinput]").tagsinput();
  });

组件使用匿名函数并将$及jQuery传入匿名函数内提供使用,功能是会选出所有data-role为tagsinput的input并执行注册到jquery对象原型链的tagsinput的函数。

接下来分析一下组件的构造函数

  function TagsInput(element, options) {
    //element组件主节点
    this.itemsArray = [];

    this.$element = $(element);
    this.$element.hide();

    this.isSelect = (element.tagName === 'SELECT');
    this.multiple = (this.isSelect && element.hasAttribute('multiple'));
    this.objectItems = options && options.itemValue;
    this.placeholderText = element.hasAttribute('placeholder') ? this.$element.attr('placeholder') : '';
    this.inputSize = Math.max(1, this.placeholderText.length);

    this.$container = $('<div class="bootstrap-tagsinput"></div>');
    this.$input = $('<input type="text" placeholder="' + this.placeholderText + '"/>').appendTo(this.$container);

    this.$element.before(this.$container);

    this.build(options);
  }

——————————————————————————————————————————————————

对于构造函数的理解,首先根据组件的DOM元素(由使用者进行编写),此input对应组件用于组件的参数设置,对应构造函数里的$element


——————————————————————————————————————————————————

$container为组件的容器DOM对应为

<div class="boostrap-tagsinput">...</div>

——————————————————————————————————————————————————

$input为container后面的空白input用于占位对应为

<input type="text" placeholder>

———————————————————————————————————————————————————

总结一下组件的DOM元素组成如下

———————————————————————————————————————————————————
最后的this.build(options)是根据$element的参数的设置渲染构建组件。

至此其实我们可以在深入分析一下,elements与options这两部分应该就是controller控制整个组件的内容构建向模型发送数据,

$input,$container是view用于展示数据,

而build应该就是model用于控制数据结构。

这也是一个小型的MVC框架,其实MVC的思想处处存在,这应该是一个普适性的道理。

今天就到这里,下一次就相信分析一下model里的内容。


http://www.niftyadmin.cn/n/801252.html

相关文章

ruby

---恢复内容开始--- 1 caopucaopu-ThinkPad-X1:/opt/navicat_mysql$ ls2 LGPLV2 Navicat start_navicat wine3 caopucaopu-ThinkPad-X1:/opt/navicat_mysql$ cd /4 bin/ dev/ lib64/ opt/ sbin/ tmp/5 boot/ etc/ lostfound/ …

智能WIFI灯

欲速而不达。——孔丘《论语》 功能简介 对Siri说turn on&#xff0c;放在远处的LED会点亮 对Siri说turn off&#xff0c; 放在远处的LED 会熄灭 下载观看功能视频&#xff08;传送门&#xff09; ESP8266开发板相关 下载驱动 Windows驱动传送门 相关设置 Mac驱动传送门 链接开…

CSS参考资料手册

个人感觉很不错的CSS教程哦 http://www.runoob.com/cssref/css-reference.html

红外遥控数码管

功能展示 1、按下开关从0顺序显示到9 2、遥控器输入0-9&#xff0c;数码管显示相应数字&#xff0c;按下*清除数码管显示内容 IRremote库下载 下载链接&#xff08;点击穿越&#xff09; 找到下载好的zip文件并安图示导入 连接好Arduino开发板&#xff0c;选好型号&#xff0c…

linux下自启动服务

我脚本的源码地址https://github.com/JackWuChengHao/linux_centos7_boost_init_sh 最近由于停电服务器重启&#xff0c;需要我再次启动服务。 感觉是时候编写一个开机自启动的脚本了&#xff0c;系统为Centos7 上网搜索了一番选择了chkconfig的方法 1.编写启动运行脚本 首…

Arduino超声波测距

相关代码 const int Trig 5; const int Echo 6; double distance, time;void setup() {// put your setup code here, to run once:Serial.begin(9600);pinMode(Trig, OUTPUT);pinMode(Echo, INPUT);Serial.println("The distance is : "); }void loop() {// put y…

学习网站分享

https://www.runoob.com/ https://www.yiibai.com/ http://www.lanrenzhijia.com/ https://www.oschina.net/

1.1 Algorithms

1.1 Algorithms sorting problem&#xff1a;