一个mvvm的简单实现
简单思路
想要完成的控件效果
- 输入框里输入一个email地址,输入正确的话回车时候将输入的email添加’;’后显示在div里;输入错误的话就提示输入错误
- 点删除的时候高亮前一条email,第二次点击删除的时候再删除前一整条数据;
- 双击某条email可以直接编辑,编辑后点击回车或者input blur的时候保存编辑后的结果并直接render在div里;
如何利用Object.defineProperty来借助一个object对象实现email的list数组与UI直接同步
- 希望每次输入完email可以直接通过
inputModel.newVal = value
的方式来添加一条数据 - 希望编辑的以后直接根据现有的list来render html
那么我可以借用一个object对象,设置其newVal的setter来达到目的,并且在add之后执行一个回调方法来render新的html
1 | var inputModel = { |
然后在输入字符的时候,点击回车,只要执行inputModel.newVal = value;
就添加了一条新数据。
当然,实现方式有很多种,目前只是想试用Object.defineProperty,所以选取了这种方式。还可以直接给element直接Object.defineProperties,比如:
1 | ...html |
1 | ...js |
1 | ...css |
完整代码
js文件
1 | require('./emailsInputPlus.css'); |
引用的tpl
1 | <div class="emailsInputPlus"> |
css
1 | .emailsInputPlus{ |