2016-08-18 2 views
0

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

Это HTML-файл:

<div class="container" ng-controller="newUserCtrl"> 
... 
<tr> 
    <td>Username:</td> 
    <td><input type="text" name="name" ng-value="user.username"></td> 
</tr> 
<tr> 
    <td>Password:</td> 
    <td><input type="text" name="name" ng-value="user.password"></td> 
</tr> 
<tr> 
    <td>Name:</td> 
    <td><input type="text" name="name" ng-value="user.name"></td> 
</tr> 
... 
</div> 

Это контроллер:

angular.module('module') 
    .controller('newUserCtrl', ['$scope', '$http', '$location', 
      '$state', newUserCtrl]); 


function newUserCtrl($scope, $http, $location, 
         $state) { 

    $scope.user = { 
     usrename: null, 
     password: null, 
     name: null 
    }; 

    $scope.saveNewUser = function() { 
    var aa = $scope.user; 

    $http.post('SERVICE URL', $scope.user) 
     .then(doSomething); 
    } 

} 

Проблема, что данные не переплетены на объект $ scope.user. Я вставляю материал, а после вызова метода сохранения я вижу, что aa - объект пользователя initail.

Как я могу это сделать?

С уважением, идо

+0

Можете ли вы предоставить Plunker pls? – Kindzoku

+0

Btw, почему вы используете $ scope? Почему бы не использовать синтаксис ControllerAs? – Kindzoku

+0

Я новый пользователь anguler, и я не знакомлюсь с ControllerAs –

ответ

1

Изменить ng-value для ng-model, чтобы исправить это.

Вот Plunker https://plnkr.co/edit/R1kqBfzNHfkJK0fvKhgJ?p=preview

Это решение с $ объем https://plnkr.co/edit/Cic7We?p=preview

Этот подход чище.

<div class="container" ng-controller="newUserCtrl as nu"> 
... 
<tr> 
    <td>Username:</td> 
    <td><input type="text" name="name" ng-model="nu.user.username"></td> 
</tr> 
<tr> 
    <td>Password:</td> 
    <td><input type="text" name="name" ng-model="nu.user.password"></td> 
</tr> 
<tr> 
    <td>Name:</td> 
    <td><input type="text" name="name" ng-model="nu.user.name"></td> 
</tr> 
... 
</div> 

angular.module('module') 
    .controller('newUserCtrl', ['$http', '$location', 
     '$state', newUserCtrl]); 


function newUserCtrl($http, $location, $state) { 
    var vm = this; 

    vm.user = { 
     usrename: null, 
     password: null, 
     name: null 
    }; 

    vm.saveNewUser = function() { 
    var aa = vm.user; 

    $http.post('SERVICE URL', vm.user) 
     .then(doSomething); 
    } 

} 
+0

Нет, ничего не меняется –

+0

Ok. Я дам вам плункер за 5 минут ... – Kindzoku

+0

@IdoBarash, я добавил Plunker. Проверьте это. – Kindzoku

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