В моем файле компонента shoppingCart.vue я вызываю простой метод:
saveCart : _.debounce(() => {
console.log('hi');
}, 2000),
Но я получаю сообщение об ошибке: Uncaught ReferenceError: _ не определен.
Теперь самое интересное. Если я изменю функцию, например, на:
saveCart(){
console.log(_.random(0, 5));
}
Все работает идеально, и я получаю, например: 4. Чтобы было еще интереснее, у меня есть некоторые другие компоненты, которые используют _.debounce, например, для поиска пользователей:
findUsers: _.debounce(
function (term)
{
let vm = this;
axios.get('/search', { params: { user: term }})
.then(response => {
vm.updateResult(response.data);
});
}
,500),
И работает отлично.
Итак, вот вам справочная информация. Думаю, у меня есть догадка, в чем проблема, но я не уверен: я использую Laravel и импортирую Lodash через bootstrap.js с
window._ = require('lodash');
Мой компонент shoppingCart.vue вызывается Buying.vue. Buying.vue вызывается
export default new VueRouter({
mode: 'history',
routes: [
{
path: '/:user/:title',
component: require('./views/buying/Buying'),
},
],
});
Может проблема где-то из-за vue router? Но я попытался сделать jsfiddle http://jsfiddle.net/gnu5gq3k/, но мой пример работает в этом случай ... В моем реальном проекте test2 создает проблему ...
В чем может быть проблема? Какая информация вам нужна, чтобы лучше понять мою проблему?
Изменить. Должно быть, я совершаю простую ошибку, которую не вижу: я изменил код на:
debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
},
saveCart: this.debounce(() => {
// All the taxing stuff you do
console.log('blubb');
}, 250),
И я не могу вызвать свою собственную функцию!
Uncaught TypeError: this.debounce is not a function
at Object
Что я делаю неправильно?