我创建了一个 JavaScript 过滤器对象并将其包含在 laravel blade.php 文件中。 当尝试在 Windows 10 Chrome 上访问该对象时它可以工作,但在 IOS Safari 或 Chrome 上我仍然未定义。
var filter = new Filter();
var handlesSlider = document.getElementById('filter-price');
var min = parseInt(handlesSlider.dataset.min);
var max = parseInt(handlesSlider.dataset.max) + 1;
noUiSlider.create(handlesSlider, {
start: [min, max],
tooltips: true,
connect: true,
margin: 5,
range: {
'min': min,
'max': max
},
format: {
// 'to' the formatted value. Receives a number.
to: function (value) {
return `${Math.round(value)}€`
},
// 'from' the formatted value.
// Receives a string, should return a number.
from: function (value) {
return Number(value.replace(',-', ''));
}
}
});
var json = {!! $json !!};
handlesSlider.noUiSlider.on('change.one', function (e) {
const min = e[0].replace("€", "");
const max = e[1].replace("€", "");
var filteredProducts = json
.filter(product =>
parseInt(product.price) >= min &&
parseInt(product.price) <= max);
filter.render(document.querySelector("{{ $selector }}"), filteredProducts);
});
filter.render(document.querySelector("{{ $selector }}"), json);
alert(filter);
并将其包含在另一个文件中:
@include('components.filter', ['min' => $min, 'max' => $max, 'json' =>
$products->toJson(), 'selector' => '.product-list__products'])
在桌面上我得到清晰的警报对象对象,但在移动设备上未定义或根本没有警报。
最佳答案
解决方案是,ios 13.1.3 无法理解 JS Arrow 函数和模块。
关于javascript - 无法在 IOS Safari 上访问对象,但可在桌面 Chrome 上使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58581516/