v-model 自带绑定的number 、lazy 、debounce属性
2018-10-11 21:33
106 查看
1.vue2.0 版本带有debounce 的 v-model 移除了,移除的原因:
Debouncing 曾经被用来控制 Ajax 请求及其它高耗任务的频率。Vue 中
v-model的
debounce属性参数使得在一些简单情况下非常容易实现这种控制。但实际上,这是控制了状态更新的频率,而不是控制高耗时任务本身。这是个微小的差别,但是会随着应用增长而显现出局限性。
[code] <!-- 通过使用 lodash 或者其它库的 debounce 函数, 我们相信 debounce 实现是一流的, 并且可以随处使用它,不仅仅是在模板中。 --> <script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.js"></script> <div id="debounce-search-demo"> <input v-model="searchQuery" placeholder="Type something"> <strong>{{ searchIndicator }}</strong> </div>
这种方式的另外一个优点是:当包裹函数执行时间与延时时间相当时,将会等待较长时间。比如,当给出搜索建议时,要等待用户输入停止一段时间后才给出建议,这个体验非常差。其实,这时候更适合用 throttling 函数。因为现在你可以自由的使用类似 lodash 之类的库,所以很快就可以用 throttling 重构项目。
[code]new Vue({ el: '#debounce-search-demo', data: { searchQuery: '', searchQueryIsDirty: false, isCalculating: false }, computed: { searchIndicator: function () { if (this.isCalculating) { return '⟳ Fetching new results' } else if (this.searchQueryIsDirty) { return '... Typing' } else { return '✓ Done' } } }, watch: { searchQuery: function () { this.searchQueryIsDirty = true this.expensiveOperation() } }, methods: { // 这是 debounce 实现的地方。 expensiveOperation: _.debounce(function () { this.isCalculating = true setTimeout(function () { this.isCalculating = false this.searchQueryIsDirty = false }.bind(this), 1000) }, 500) } }) |
2.lnumber 属性:
如果想将用户的输入自动转换为Number类型(若原值的转换结果为NaN,则返回原值),则可添加一个number特性。使用方法:
<input v-model.number="age" type="number">
3.lazy 属性:
默认情况下,v-model在input事件中同步输入的值与数据,我们可以添加一个lazy特性,从而将数据改到在change事件中发生。使用方法如下:
eg1:<input v-model.lazy="name">
eg2:
<body>
<input v-model.lazy="msg"/>
{{msg}}
</body>
<script>
var exampleVM2 = new Vue({
el:'#example',
data:{
msg:'内容是在change事件后才改变的~'
}
})
</script>
阅读更多相关文章推荐
- element-ui:非v-model绑定的自身属性的form表单验证
- 小心 Controller.UpdateModel, 它不支持绑定派生类的属性
- vue div contenteditable属性,模拟v-model双向数据绑定功能
- knockout js动态绑定viewModel的对象属性
- 【原创】Asp.net MVC学习笔记之-基于类型来绑定Model的属性
- 关于vue v-for 嵌套v-for的v-model属性绑定问题
- Vue属性绑定v-bind:和双向数据绑定v-model
- [ExtJS5学习笔记]第十六节 Extjs5使用panel新增的ViewModel属性绑定数据
- [ExtJS5学习笔记]第十六节 Extjs5使用panel新增的ViewModel属性绑定数据
- 【原创】Asp.net MVC学习笔记之-基于用途来绑定Model的属性
- [ExtJS5学习笔记]第十六节 Extjs5使用panel新增的ViewModel属性绑定数据
- 读取XML的节点属性并绑定到ListBox
- Ext.form.NumberField的属性
- WPF ----在UserControl的xaml里绑定依赖属性
- C#中关于Gridview的一些属性(二、绑定数据)
- 底层元素包含属性的XML文档的绑定
- android gridview几个重要属性(android:listSelector自带内部padding分析)
- 要在PB自带连接属性中的tableOwner中改好用户名
- Spring_2_Spring中lazy-init和scope属性
- 传个字典给Model,自动给Model中的属性赋值