javascript - 在 vue.js SFC 中使用 lodash.throttle 超时的数据值
问题描述
嘿这里的所有人,
我对 Vue.js 还很陌生,但我想我已经开始接触它了。但是,我的单文件组件与 lodashs throttle() 函数结合使用时存在问题。这是我的组件到目前为止的样子:
<template>
<fieldset class="fieldset-shorttext">
<label v-bind:for="itemId"
v-text="label"></label>
<input v-bind:name="itemId"
v-bind:id="itemId"
v-model="input"
type="text" />
</fieldset>
</template>
<script>
import _ from 'lodash'
export default {
data() {
return {
itemId: '123450',
label: 'Test Label',
input: 'Test value',
throttled: 200
};
},
watch: {
input: function (value) {
this.throttledValuePush(value)
}
},
methods: {
throttledValuePush: _.throttle(function(value) {
console.log(value);
}, this.throttled)
}
};
</script>
<style>
.fieldset-shorttext {
border:0;
}
</style>
当我在浏览器中运行它时,我收到一个错误,即this.throttled(用作我的 throttle() 函数的超时参数)未定义。例如,当我使用固定值(例如200 )时,它会起作用。但是我无法通过使用“ throttled
”数据变量的值来运行它。
谁能帮我?非常感谢您提前。
编辑:我在这里添加了一个沙盒示例: https ://codesandbox.io/s/434490z5v9
解决方案
该data
对象被实例化,其属性被放入this
after methods
,您当时 不能使用。this.throttle
相反,您可以this.throttl
在mounted
生命周期挂钩中使用
methods: {
throttledValuePush: undefined,
},
mounted() {
this.throttledValuePush = _.throttle((value) => console.log(value), this.throttled);
}
推荐阅读
- python - 在 pandas 中合并三个以上相似的表会导致列名过度折叠
- azure - Azure 数据工厂中的复制数据很慢
- javascript - 数组未在括号中显示它包含的值
- python - 如何在 Python 中正确注释合作继承?
- ruby - 如何抓取 CSV 文件的某些行并将它们保存在单独的文件中
- mysql - 尽可能快地获取我的 MySQL 的第一行(也在大表上)
- lua - 这个脚本有什么问题
- javascript - 仅在显示下拉菜单时显示叠加
- paypal - 如何构建“if”语句来测试用户是否已付款(贝宝商家工具)?
- python - 如何从同一应用的另一个用户那里获取用户应用的位置