Спасибо всем. Теперь я понимаю, что я не могу, по дизайну, смешать MVC и AngularJS.В моем случае я могу просто использовать MVC, а не AngularJS, но я хотел получить лучшее из них и начать изучать AngularJS, так что это то, что я сделал. На стороне MVC я заполнил свою ViewModel и создал строго типизированный View для этой ViewModel. По мнению я ссылаюсь мои ViewModel как это:
@model Project_X_01202015_Web.ViewModel.ConsultantViewModel
чем я создал мои AngularJS часть, как обычно, за исключением этого:
$ scope.user = { id: 1, isVerifiedUser: '@ Model.UserBaseViewModel.IsVerifiedUser', firstName: '@ Model.UserBaseViewModel.FirstName', midd leName: '@ Model.UserBaseViewModel.MiddleName', LastName: '@ Model.UserBaseViewModel.LastName', электронная почта: @ Model.UserBaseViewModel.Email ', адрес: '@ Model.UserBaseViewModel.Address', address1: @ Model.UserBaseViewModel.Address1 ', PHONENUMBER: '@ Model.UserBaseViewModel.PhoneNumber', ячейки: '@ Model.UserBaseViewModel.PhoneNumber1', город: '@ Model.UserBaseViewModel.CityName', PostalCode: @ Model.UserBaseViewModel.PostalCode ', Состояние:' @ Model.UserBaseViewModel.StateName ' };
я могу изменить значение свойства в $ scope.user на представлении и, когда мне нужно обновить объект ViewModel, который заполняется из базы данных мне придется обновить свою базу данных со значениями первой и чем повторите мой ViewModel и верните его в представление или просто обновите текущий экземпляр ViewModel и обновите страницу. Но вместо обновления страницы то, что я сделал, обновляет представление и отправляет вызов контроллеру MVC для обновления базы данных. Этот способ обновляется, и всякий раз, когда пользователь обновляет фактические данные страницы, представленные из базы данных, информация об пользовательском интерфейсе не изменяется.
Я мог бы обновить значения $ scope.user следующим образом: $scope.user.city = "Huntsville";
, и когда мне нужно было отправить любую информацию обратно на контроллер MVC, я сделал это: url: '/Consultant/SaveConsultantInformation', async: 'false', type: 'POST', dataType: 'json', data: { user: $scope.user },
в своем сообщении. У меня возникли некоторые проблемы с сообщением/get AngularJs и невозможностью обновить значение $ scope.user от успеха: функция (результат) {} сообщения post/get и ng-hide/ng-show больше задействована для базовое использование, чем простой $ ('# verifyMeButton'). hide(); но для этого я сделал обходной метод, не поддерживающий AngularJS. Из всего, что я думаю, AngularJS отлично подходит для общения в пользовательском интерфейсе, и я продолжу его использовать.
Я согласен использовать услугу для вызова для извлечения данных - это один из подходов. Но с MVC можно загружать страницу при загрузке. Это приятно уменьшить до количества обращений к серверу. Поэтому вместо загрузки html и последующего повторного вызова вы можете передать модель с исходным запросом. Вы можете даже использовать ng-init для загрузки/отображения данных на странице, если это необходимо. Единственное, о чем нужно быть осторожным, - это обеспечить, чтобы вы не проходили слишком раздутую модель. – rlcrews
@rlcrews, в то время как вы правы, что с MVC вы можете писать данные непосредственно на страницу, делая это с помощью углового, это не угловой способ. Angular не является библиотекой связывания данных, такой как Knockout, это полнофункциональная структура, предназначенная для создания одностраничных приложений. Использование HTTP-вызова на сервере - лучший подход к загрузке данных. NNassar было бы лучше создать единую страницу для функций, которые он хочет, загружать, отображать и редактировать, а затем делать get и posts для перемещения данных с контроллера на его конечные точки mvc. – Chris
@rlcrews В моем приложении я также получаю (очень очень минимальные) данные о всех состояниях на первой странице, если это то, что нужно знать на протяжении всего SPA, но в этом случае я показал ему состояние ума. хочет преследовать определенную страницу и как должно выглядеть большинство его государств. –