У меня есть представление, в котором я показываю информацию о сотруднике. В этом представлении у меня есть флажок, например: Recieve Daily Email
. Когда пользователь нажимает на этом поле, мне нужно выполнить функцию AJAX как вид проверки, чтобы проверить, если пользователь может изменить эту настройку:Выполнение функции перед изменением свойств viewmodel
If result is true: allow knockout to change the ViewModel Property
If result is false: prevent knockout to change the ViewModel Property
Я сделал простой demo, чтобы продемонстрировать мою проблему. Я предположил, что моя функция AJAX 'll return false
. Попытайтесь нажать на флажок, затем нажмите кнопку, чтобы проверить значение ViewModel, оно будет истинным, хотя оно не проверено (из-за return false
).
Любые предложения?
но при изменении наблюдаемого '' receiveMail' в setTimeout' это будет запускать 'функцию subscribe' снова, верно? –
В текущем примере он запускает его один раз. Было бы легко управлять этим с помощью дополнительного флага, например: http://jsfiddle.net/rniemeyer/eKdxZ/. Если вы используете вызов AJAX, вы можете установить флаг в true, прежде чем делать запрос AJAX (чтобы предотвратить потенциально несколько запросов), а затем очистить его, если вызов AJAX завершился с ошибкой. –