2014-02-18 4 views
0

Можно ли передавать наблюдаемые и наблюдаемые массивы из viewmodel в качестве аргументов другим страницам или как json?Можно передать параметры с viewmodel на другую страницу?

Предположим, у меня есть пара полей, и когда я нажимаю кнопку, она перенаправляется на другую страницу и отображает параметры.

Можно ли это сделать с помощью нокаута/jquery или мне нужно отправить сообщение на контроллер и перенаправить оттуда?

Идея состоит в том, чтобы передавать информацию на страницу подтверждения и оттуда отправляться на контроллер.

Спасибо за forehand!

ответ

1

Я бы зашел так далеко, чтобы сказать, что вы не должны делать ничего из этого. Он пахнет плохим дизайном.

я ответил тот же вопрос (или, по крайней мере, очень похожи друг на друга) некоторое время назад, и я думаю, что ответ относится и здесь: durandal : best way to pass data between ViewModels

Edit: я перечитал то, что ваша цель была. В этом случае я бы поступил иначе: никогда не покидайте страницу для начала. Просто создайте строку подтверждения «в строке» в текущем представлении и установите флаг, чтобы определить, должна ли отображаться форма или подтверждение. Это сэкономит много накладных расходов и будет более восприимчивым на стороне клиента.

Edit 2: Fiddle вы просили: http://jsfiddle.net/7zp5K/33/

В основном трюк все в submit функции на вашей ViewModel где я обменим наблюдаемую showConfirm. В вашем HTML я создал 2 'views' (divs). Отображается только один, основанный на состоянии showConfirm.

В окне подтверждения я использую привязку foreach для отображения выбранных элементов.

+0

Моя проблема заключается в том, что у меня будет примерно 20 разных идентификаторов, поэтому будет трудно перенаправить ссылку/id или что-то в этом роде. Мне нужно передать объекты. :(Лучшим подходом в этом случае может быть публикация на контроллер и сопоставление с объектами? – Henrik

+0

Передача объектов на другую страницу - это не очень хорошая идея, если вы спросите меня. Идите в «подход, основанный на режиме просмотра», который я предложил в тема, которую я связал. Кроме того, я отредактировал свой пост, чтобы предложить что-то еще полностью. –

+0

Когда вы используете Knockout, вы должны знать тонкую разницу между «страницей» и «представлением». Представление - это просто способ представления данных ,В вашем случае данные остаются неизменными все время, но способ, которым вы представляете его, отличается (форма против чтения только с проверкой подтверждения). Вам просто нужно переключить представление (HTML), а не данные. Абсолютно не нужно усложнять работу, создавая вторую страницу. –

0

Если я правильно понял ваш вопрос, вы пытаетесь передать ViewModel с одной страницы на другую. Если это так, то это невозможно сразу. Вы должны создать ViewModel на перенаправленной странице на основе полученных данных, либо с помощью запроса, JSON, либо любого другого формата данных.

Если данные малы, вы можете передать их через querystring и создать соответственно режим просмотра на перенаправленной странице. В противном случае используйте форму post для отправки данных. Это больше требование специфический, а не нокаут специфический.

+0

На другой странице (к которой я перенаправляюсь) я возьму параметры в конструкторе viewmodel. У меня будет 2 наблюдаемых и 2 наблюдаемых массива, которые будут содержать 1-20 строк. Таким образом, это не те большие данные, которые будут переданы. Если это возможно, я хочу, чтобы этого не было, потому что я просто передам это на страницу подтверждения и отправлю форму. – Henrik

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