Это пахнет так, как будто вы идете об этом неправильно.
По-видимому, вы строите свои представления на стороне сервера, выполняете там логику, которая отключает/включает элементы управления и так далее. Теперь вы действительно сталкиваетесь с проблемами, потому что если HTML кэшируется, то же самое происходит и с логикой, которая использовалась для создания этого HTML.
Вы можете пройти через это, «очистив кеш» при выходе из системы. Но что, если в будущем права пользователя можно будет изменить, пока он еще находится в системе? Вы должны изобрести еще один хак, чтобы заставить это работать. В конечном счете, вы создадите тонну спагетти-кода, который будет очень хрупким.
Вместо этого представления, ЕСЛИ вы хотите их кэшировать, НЕ ДОЛЖНЫ содержать никакой логики. Логика, которая включает или отключает элементы, да и все остальное, должна диктоваться вашим JavaScript и данными, которые вы получаете от серверной части. Представление — это всего лишь HTML-шаблон, который использует данные из модели представления JavaScript.
По сути, вам нужно переключиться в своем уме и начать использовать Durandal/Knockout так, как он должен использоваться: MVVM, привязки в вашем HTML, которые устанавливают состояние DOM на основе данных в вашей модели представления. То, что вы делаете прямо сейчас, — это «жесткое кодирование» состояния HTML, когда вы визуализируете HTML на сервере, и вы пытаетесь взломать свой путь через нединамическую природу этого решения.
Если вы действительно хотите продолжить свою текущую линию кодирования: простой способ добиться полного сброса вашего JS и HTML — это выполнить полное обновление страницы, таким образом, «покинув свое SPA».
person
Hans Roerdinkholder
schedule
24.02.2014