Я пытаюсь создать веб-страницу с формой, которая после того, как пользователь изменит любое поле, проверит проверку и обновление, а не позволит пользователю нажать кнопку отправки. Я использую Knockout.js и картографический плагин. Я знаю, что могу достичь этого, создав вычисленное поле для каждого исходного поля, но такая работа является tedius и немой, есть ли хорошая практика для создания общего слушателя для прослушивания любых изменений в любых полях и обновления бэкэнда соответственно?Мгновенное обновление бэкэнда с помощью Knockoutjs
ответ
Чтобы подписаться на любые изменения, вы можете использовать метод ko.toJS(). Фактически это позволяет пройти через объектный граф и разворачивать наблюдаемые. Как известно, когда вы используете ko.computed, он подписывается на все чтения полей наблюдаемых данных и переоценивает их при каждом изменении. Так что если вы используете такой код:
ko.computed(function() {
ko.toJS(viewModel);
// update data on server
});
Также следует обратить внимание, что этот кусок кода будет обновлять данные на сервере сразу после инициализации. Его можно было бы легко избежать. Пожалуйста, ознакомьтесь с этим примером: http://jsfiddle.net/UAxXa/embedded/result/
Также, я думаю, вы можете отправить только измененные данные на сервер. Вы можете включить плагин ko.editbales (https://github.com/romanych/ko.editables) и некоторые знания KO under-hood. Пожалуйста, проверьте этот образец: http://jsfiddle.net/romanych/RKn5k/
Надеюсь, это может вам помочь.
У вас есть несколько вариантов, но если вы хотите одного слушателя, один хороший способ - использовать тот же код, который я использовал для создания трекера изменений. Он просто слушает наблюдаемые изменения. Его около 19 строк кода. Вы можете захватить это и вместо того, чтобы использовать его для отслеживания изменений, просто подключите метод, который сохраняет изменения, когда они происходят.
- NuGet http://nuget.org/packages/Knockout.ChangeTracker
- Codeplex http://kochangetracker.codeplex.com/
Для отслеживания изменений настройки, добавить это свойство трекер для вашей модели представления:
viewModel.tracker = new ChangeTracker(viewModel);
Крюк их в ваш взгляд, чтобы определить, когда происходят изменения :
viewModel.tracker().somethingHasChanged();
Крюк это в вашей модели представления, когда вы хотите сбросить состояние функций (например: загрузка, сохранение):
viewModel.tracker().markCurrentStateAsClean;
При желании, вы можете передать свой собственный хэш-функцию для отслеживания состояния тоже.
- 1. Обновление нескольких вкладок с помощью KnockoutJS
- 2. Как получить мгновенное обновление с текстового поля?
- 3. Обновление элемента строки в knockoutjs
- 4. Получить мгновенное обновление смены ширины изображения
- 5. Обновление выпадающий список knockoutjs и значение выбивки с помощью JQuery
- 6. Мгновенное обновление текстового поля в InfoPath 2007
- 7. Мгновенное обновление и продолжение выполнения скрипта php
- 8. Мгновенное обновление свойства в MVVM Light?
- 9. angularjs мгновенное обновление при вызове функции
- 10. Как предотвратить мгновенное обновление данных отслеживания событий?
- 11. Как реализовать мгновенное обновление в Android?
- 12. Java XML разбора: мгновенное обновление файла
- 13. Как установить мгновенное сообщение с помощью jquery?
- 14. Мгновенное обнаружение удара с помощью SpriteKit
- 15. Обновление ViewModel с использованием пользовательских привязок KnockoutJS
- 16. Обновление элемента наблюдаемого массива Knockoutjs
- 17. Автономное обновление отображения в knockoutjs
- 18. Снимите галочку с помощью KnockoutJS
- 19. Поиск, фильтрация с помощью knockoutjs
- 20. Аутентификация с помощью кордовой и Java-бэкэнда
- 21. Аутентификация приложения iPhone с помощью веб-бэкэнда
- 22. Ведение журнала хранения с помощью веб-бэкэнда
- 23. Отображаемый щелчок элемента с помощью Knockoutjs
- 24. Paypal мгновенное обновление nvp не работает (среда песочницы)
- 25. Выбор бэкэнда?
- 26. с помощью радио-кнопки с knockoutjs
- 27. Несколько полей обновление одной модели в knockoutjs
- 28. Отложить обновление модели knockoutjs до подтверждения/сохранения
- 29. Обновление наблюдаемой модели в пользовательских привязках knockoutjs
- 30. Мгновенное изменение цвета значка