Угловая привязка нового объекта

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?
  • 0
    Кстати, почему вы используете $ scope? Почему бы не использовать ControllerAs синтаксис?
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

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

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

Это решение имеет значение $ scope 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
    Хорошо. Я дам тебе вантуз через 5 минут ...
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню