2013-02-11 4 views
0

Я новичок в MVVM, и я хотел понять, если у вас есть модель в задней части, скажем, библиотека aC#, которая получает данные из базы данных или любой другой службы , как модель сообщит моделе viewmodel. Я понимаю, что в MVVM INotifyprovier делает это для WPF (просто читайте его где-то), но как насчет сценария на основе веб-приложений, то в Viewmodel в java-script всегда приходится пинговать модель, чтобы определить, есть ли изменение в модели, а затем распространять к пользовательскому интерфейсу. Я предполагаю, что viewmodel всегда должен был отправить запрос Ajax в asmx или api с заданным интервалом в 10 минут или около того (просто пример). - это то, как он работает от конца до конца. любой пример будет замечательным.В конце концов MVVM использует нокаут (javascript)

Поскольку одно из свойств - автоматическое обновление пользовательского интерфейса, поэтому я предполагаю, что свежие данные необходимо запрашивать с сервера через регулярные промежутки времени. Множество примеров, которые я вижу в Интернете, взаимодействует только между ViewModel и View, но вряд ли я вижу что-то с Model, ViewModel и View all вместе.

Я мог подумать, что если вы используете SignalR, который отправляет ping от сервера к клиенту, то Viewmodel может быть обновлен и, следовательно, View.

Но если каждый раз, когда вам нужно запросить свежий набор данных от Sever, так что с шумихой Knockout, Jquery делает это некоторое время, за исключением декларативной привязки, в библиотеке нокаутов.

Цените, если кто-то может меня поправить.

Благодаря

+0

Если вы работаете через [учебник KnockoutJS] (http://learn.knockoutjs.com/) и/или читаете в [соответствующей документации] (http://knockoutjs.com/documentation/json-data. html) вещи должны стать довольно ясными. Кроме того, вы можете прочитать [WebSockets] (https://developer.mozilla.org/en-US/docs/WebSockets) и его резервные копии/альтернативы. – Jeroen

+0

Спасибо, Joroen, но у меня был вопрос о том, как все сочетается. Я обновил свой вопрос, добавив в него больше комментариев. Таким образом, по ссылкам, которые вы отправили, модель Infact встроена, не так ли? Для MVVM в javascript (нокаут) здесь есть только ViewModel и View. ViewModel - тот, кто отправляет запрос на сервер, правильно? – Rahul

ответ

1

Это до клиентского приложения для извлечения новых данных, так как сервер не имеет никакого понятия о наблюдаемых. Существует также полезный mapping plugin, который может автоматически отображать ваши данные javascript с сервера в наблюдаемый. Таким образом, когда вы извлекаете данные, вам не нужно повторно отображать данные.

Тем не менее, клиент может уведомлять об изменениях с сервера. Один из способов - сделать изменения push-клиента сервером через WebSockets HTML5. SignalR - хороший кандидат в библиотеку для этой задачи. Он откроет соединения WebSockets, чтобы сервер мог уведомить клиента об изменениях. И вы должны использовать Service Broker SqlDependency для активации уведомлений о событиях при обновлениях. Пример можно найти here.

Удачи вам!

Также есть a really good video, чтобы посмотреть о knockoutjs, который даст вам представление о структуре.

+0

Спасибо, Но где же здесь модель, относится ли эта модель к серверу. Нет документации по модели в knockoutjs.com и в идеале, как бы вы это сделали, если не используете websockets и signalR, всегда отправляете запрос на сервер с помощью кода в ViewModel, чтобы запрашивать свежие данные в течение обычного промежутка времени (как объясняется в вопросе) Просто любопытно. – Rahul

+1

Вот объяснение модели: http://knockoutjs.com/documentation/observables.html#mvvm_and_view_models. И да, вам нужно будет опросить данные с интервалами без WebSockets. – Sergey