Модель начальной загрузки не закрывается должным образом при использовании с нокаутом js

Я использую нокаут с bootstrap js.

Мое требование:

  • Я создаю HTML-форму и выполняю привязку данных с помощью нокаута.
  • После отправки этой формы я показываю сообщение пользователю в модальном режиме начальной загрузки.
  • При закрытии этого модального окна мне нужно сбросить форму HTML. SO при нажатии на кнопку закрытия I и выполнении привязки щелчка и вызове метода. Ниже приведен фрагмент этого метода.

// Re-setting the observable  to default value
me.addStudentForClass(null);
me.parents=ko.mapping.fromJS(new parentInfoModel(undefined));
me.localGuardian=ko.mapping.fromJS(new localGuardian(undefined));
me.lastSchoolEducation=ko.mapping.fromJS(new lastSchoolEducation(undefined));
// Closing bootstrap Modal
$('modal-id').modal('hide');
// Cleaning the knockout node , to reflect the reset change 
ko.cleanNode($('#add-student')[0]);
// and binding the view model 
ko.applyBindings(app.mainViewModel, $('#add-student')[0]);

Если мы не используем ниже двух строк кода, тогда модальное окно работает нормально, и модальное окно закрывается при нажатии кнопки закрытия.

ko.cleanNode($('#add-student')[0]);
ko.applyBindings(app.mainViewModel, $('#add-student')[0]);

Но мне нужно использовать приведенные выше две строки кода, потому что мне нужно сбросить мою форму.

Если мы задерживаем очистку узла, он работает нормально.

function saysomething(){
			ko.cleanNode($('#add-student')[0]);
			ko.applyBindings(app.mainViewModel, $('#add-student')[0]);
     }
     setTimeout(saysomething, 500);	}

Пожалуйста, помогите мне с этим. Я не хочу использовать setTimeout. И, пожалуйста, предложите лучший способ для этого.

Благодарю вас


person Priyank Sinha    schedule 15.09.2019    source источник


Ответы (1)


Вместо использования setTimeout вы можете прослушивать событие hidden:

$('#modal-id').on('hidden.bs.modal', function (e) {
  ko.cleanNode($('#add-student')[0]);
  ko.applyBindings(app.mainViewModel, $('#add-student')[0]);
})

См. документацию Bootstrap по обработке модальных событий.

person Michael Crenshaw    schedule 16.09.2019