0

Я работаю над веб-приложением, которое должно быть полностью совместимо с мобильными и настольными устройствами. Я связывание события щелчка к узлу и передача параметра функции ViewModel как так:KnockoutJS - клик по бингу с параметрами, не работающими на мобильных устройствах

<a href="#" class='btn btn-danger' data-bind="click: bsDeleteModal.open.bind($data, 1)"><span>Delete</span></a> 

Он работает должным образом на настольных браузерах, но не на мобильных телефонах или планшетах. Я протестировал этот код на родных браузерах Android на планшете и телефоне, Internet Exporer 11 на Windows Phone 8.1, iPhone Safari и мобильных версиях Chrome на каждом устройстве без везения.

Это мой ViewModel упрощенно:

var DeleteModalViewModel = function(/*parameters....*/){ 
    var self = this; 
    //parameters... 
    self.open = function(position){ 
    alert("position: " + position); 
    } 
} 

var vm = (function(){ //...my viewmodel... 
    var self = this; 
    self.bsDeleteModal = new DeleteModalViewModel(/*parameters...*/); 

    //additional parameters... 
})(); 

ko.applyBindings(vm); 

Существует известная проблема или ошибка в knockoutjs 3 рамке, которая предотвращает меня от привязки событий во время передачи параметров на мобильных телефонах?
Я также попытался передать его так:

<a data-bind="click: function(data, event){ bsDeleteModal.open.bind($data, 1) }" /> 

Кроме того, я попытался добавить $ корень перед именем функции мышления мобильные устройства не могут разобрать имена функций правильно, но не везло.

<a data-bind="click: function(data, event){ $root.bsDeleteModal.open.bind($data, 1) }" /> 

Любая помощь будет очень признательна. Заранее спасибо.

EDIT: Я забыл упомянуть: мой html-код находится внутри тега шаблона, который загружается как частичный вид при загрузке страницы. Это может быть важно, так как раньше у меня были проблемы с динамическими привязками шаблонов.

ответ

0

мне удалось решить эту проблему с помощью коллеги.
Оказалось, что проблема связана с привязкой шаблона, поскольку кнопка на мобильных устройствах была отображена «за» страницей.
Как только я установил z-индекс 9999 в css на кнопку, привязка работала нормально.

0

Функция привязки может отсутствовать на некоторых устройствах + комбинация браузера.

То есть особенность ES5, что вам нужно polyfill, если он отсутствует

Проверить наличие Function.prototype.bind

Смежные вопросы