Durandal: вручную удалить представление из DOM

Я создаю одностраничное приложение с помощью HotTowel SPA, в котором используется Durandal 2.0.

У меня есть два представления: Dashboard и Settings.

Когда я загружаю веб-сайт, загружается панель инструментов. Когда я нажимаю «Настройки», представление «Панель управления» деактивируется, а когда я нажимаю «Панель управления», оно снова активируется.

У меня есть метод в моем представлении настроек. Когда этот метод вызывается, я хочу, чтобы представление Dashboard было удалено из DOM. так что, когда я снова нажимаю на Dashboard, он должен перезагрузить представление (точно так же, как при перезагрузке веб-страницы), а не просто активировать его.

Итак, есть ли способ отсоединить представление вручную?


person user2858572    schedule 08.10.2013    source источник
comment
Не очень понимаю использование, не могли бы вы лучше объяснить, чего вы пытаетесь достичь?   -  person PW Kad    schedule 08.10.2013
comment
чего вы пытаетесь достичь, удаляя вид, поскольку он мешает Дюрандалю   -  person Dhana Krishnasamy    schedule 08.10.2013
comment
Спасибо за ответ. Я хочу, чтобы страница панели инструментов перезагружалась каждый раз, когда я ее открываю (так же, как когда я загружаю страницу в первый раз). Я думал, что это будет возможно, если вы удалите вид из дома, потому что Дюрандаль говорит, что это происходит, когда вид отделяется. (Когда вы проверяете документы Durandal, там говорится, что отсоединенный обратный вызов будет вызываться, когда связанное представление будет отсоединено от DOM)   -  person user2858572    schedule 09.10.2013
comment
В основном я хочу, чтобы представление перезагружалось каждый раз, когда я его активирую.   -  person user2858572    schedule 09.10.2013


Ответы (1)


Вы можете cacheViews установить значение false для привязки композиции. См. примерно 3/4 ниже на странице Использование композиции.

В файле shell.html (полагаю, в HotTowel то же самое) будет строка вида:

<div class="container-fluid page-host" data-bind="router: { transition:'entrance', cacheViews:false }"></div>
person Dave W    schedule 09.10.2013
comment
Я нашел это также. Но если я это сделаю, каждый вид всегда будет отсоединен, а это не то, что я ищу. - person user2858572; 09.10.2013
comment
В этом случае на той же странице также указано Примечание: Если вы установили cacheViews:true, присоединение будет вызываться только при первом отображении представления при начальной привязке, поскольку технически представление прикрепляется только один раз. Если вы хотите переопределить это поведение, задайте для привязки композиции alwaysTriggerAttach:true. - person Dave W; 09.10.2013
comment
Спасибо, это довольно близко к тому, что я ищу. Но есть ли способ установить alwaysTriggerAttach:true только для одного представления или только при выполнении определенного метода? - person user2858572; 10.10.2013