2014-06-19 2 views
0

В нижней части durandal docs для диалогов/модалов (http://durandaljs.com/documentation/Showing-Message-Boxes-And-Modals.html) есть некоторый синтаксис для изменения положения диалога. Диалог, который я получаю, постепенно увеличивается по мере того, как пользователь выбирает материал, поэтому каждый раз, когда делается выбор, я бы хотел позвонить reposition(). Я попытался следующие вместе с этим:Durandal 2.0 Dialog Repositioning

vm.compositionComplete = function (child, parent, context) { 

     var addEditDialog = dialog.getDialog(context.model); // resolves 

     // whenever something is selected: 
     addEditDialog.context.reposition(vm); // no method 'reposition' 

} 

Но я получаю ошибку - нет функции reposition. Что я делаю не так?

ответ

0

Вы можете настроить пользовательский контекст диалога, который отвечает на сообщение перестановки (используя приложение Durandal app.trigger()). Вы вызываете сообщение на какое-то событие в своем диалоговом окне (например, как вы говорите, пользовательский материал).

Также в этом настраиваемом диалоговом окне создайте вызов метода reposition. В обработчике activate или attached этого настраиваемого диалогового контекста подпишитесь на сообщение, которое вы используете для запуска перестановки.

Я сторонник подхода к обмену сообщениями, потому что вы можете изолировать свой «viewModel» выбора в своем собственном представленииModel и затем составить его в свой собственный контекст диалога. При таком подходе ваш viewModel выбора и ваш пользовательский контекст диалога будут слабо связаны. Таким образом, вы можете использовать свой выбор viewModel в другом месте вашего кода (и даже иметь какой-то другой viewModel, вместо контекста пользовательского диалога, отвечать на сообщение перестановки).

+0

Благодарим за это. Вы знаете, почему документированный синтаксис не работает? Я бы предпочел не вносить здесь существенных изменений:/ – SB2055

+0

Посмотрите на это: https://github.com/BlueSpire/Durandal/pull/362. 'reposition' - это функция 2.1. Вы указали, что используете 2.0. –

Смежные вопросы