2015-01-31 6 views
0

Я пытаюсь сделать HTTP-сообщение, используя AngularJS, но угловой не преобразовывает переменную $scope в JSON.

Вот мой код:

 $http({ 
       method: "POST", 
       url: "/Account/Login", 
       data: $scope 
      }) 

что приводит к сообщению о запрос POST, имеющий

"$SCOPE" 

, но если я изменить его на выходе любого из моих свойств области видимости, он отправляет сообщение с правильные свойства, например:

 $http({ 
       method: "POST", 
       url: "/Account/Login", 
       data: { email: $scope.email, password: $scope.password } 
      }) 

Какой результат в сообщении POST запроса, имеющем

{"email":"a[email protected]","password":"asd"} 

Должен ли я всегда обматывать мои запросы таким образом? Или есть способ рассказать, что AngularJS отправляет все свойства по охвату? Любой Pro's/Con?

+1

не используйте '$ scope'. Используйте внутренний объект, как' $ области. data', который имеет 'data.email' и' data.password'. Это говорит об этом в руководстве, потому что 'ngIf' и' ngRepeat' будут изолировать ваши примитивные переменные области видимости. – cgTag

ответ

6

Отправка $ объем не является хорошей идеей, оно содержит намного больше, чем ваш email и password

Вы должны создать свойство как $scope.user, а затем присоединить модель к ней, как $scope.user.email. Теперь вы можете отправить его с помощью $scope.user

$http({ 
    method: "POST", 
    url: "/Account/Login", 
    data: $scope.user 
}) 

лил о $scope

сферы является «объект», который «связывает» к DOM элементу, где применяются контроллер. Все дочерние элементы могут считывать и изменять данные областей (если вы не измените примитивы в новых областях или они изолированы

for more official doc is they way

+0

Я делал это раньше (имея formData object inside scope), но тогда это означает, что все в моей форме необходимо привязать к formData.email и т. д. –

+0

Действительно ли tehre изменить масштаб или корень привязок внутренних объектов внутри формы? Например, bindg form to $ scope.user, а затем на входах есть только ng-model = "email", которая будет привязана к $ scope.user.email? –

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