Я новичок в KnockOut, и мне дали проект, использующий его для создания модального стиля. Есть панель поиска, в которой вы можете найти имя пользователя и добавить его в список. Вот код для добавления пользователя:
// binding when a user is selected
$('#addUser').bind('typeahead:select', function (event, suggestion) {
debugger;
var userNameValue = $('#addUser').val();
var userFromArray = $.grep(self.userNameList(), function (user) { return ko.utils.unwrapObservable(user.value) == userNameValue });
// cannot add several times a same user
if (self.userToAdd() && userNameValue != "") {
if (userFromArray.length >= 0) {
if ($.grep(self.editingUserList.userKeyValues(), function (user) { return ko.utils.unwrapObservable(user.value) == userNameValue }).length == 0) {
self.editingUserList.userKeyValues.push(new roleKeyValueModel(userFromArray[0].key, userFromArray[0].value, userFromArray[0].role));
} else {
jAlertBox('"' + userNameValue + '" @(Resources.IsAlreadyAdded)', "", "info");
}
} else {
debugger;
jAlertBox('"' + userNameValue + '" @(Resources.IsUnknown)', "", "warning");
}
}
self.userToAdd("");
$('#addUser').typeahead('val', '');
});
Он отлично работает, когда я открываю первый модальный. Однако, , когда я закрываю его и открываю второй модальный , эта функция запускается несколько раз и не может добавить ни одного пользователя (при первом запуске она обнаруживает правильного пользователя, но при втором запуске отправляется пустое имя пользователя,что мешает правильному завершению функции).
Не могли бы вы помочь мне и указать, что не так? Я проверил несколько часов ...
Я могу добавить больше кода, если вам нужно.
Редактировать: , чтобы быть более точным, привязка срабатывает три раза, если модал был открыт 3 раза, 4 раза, если он был открыт 4 раза, и т. Д ...