2016-03-31 3 views
0

Мой угловой код не отправляется в api, когда я вводим данные в форму, даже если мой api доказал свою работоспособность и выполняет завитущие запросы CRUD. Функция регистра вызывается из моего частичного, зарегистрируйте контроллер использует службу пользователя и зарегистрировать функцию, чтобы получить возможность отправлять форме модель в апиУгловой не отправляется на URI

абонентское

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .factory('UserService', UserService); 

    UserService.$inject = ['$http']; 
    function UserService($http) { 
     var service = {}; 

     service.GetAll = GetAll; 
     service.GetById = GetById; 
     service.GetByUsername = GetByUsername; 
     service.Create = Create; 
     service.Update = Update; 
     service.Delete = Delete; 

     return service; 

     function GetAll() { 
      return $http.get('https://me.com/api/users/').then(handleSuccess, handleError('Error getting all users')); 
     } 

     function GetById(id) { 
      return $http.get('https://me.com/api/users/' + id).then(handleSuccess, handleError('Error getting user by id')); 
     } 
... 

    function Create(user) { 
     return $http.post('https://me.com/api/users', user).then(handleSuccess, handleError('Error creating user')); 
    } 

..... 

Регистрация Частичное

<div ng-controller="RegisterController as vm"> 
<div class="col-md-6 col-md-offset-3"> 
    <h2>Register</h2> 
    <form name="form" ng-submit="vm.register()" role="form"> 
     <div class="form-group" ng-class="{ 'has-error': form.fname.$dirty && form.fname.$error.required }"> 
      <label for="username">First name</label> 
      <input type="text" name="fname" id="fname" class="form-control" ng-model="vm.user.fname" required /> 
      <span ng-show="form.fname.$dirty && form.fname.$error.required" class="help-block">First name is required</span> 
     </div> 
     <div class="form-group" ng-class="{ 'has-error': form.lname.$dirty && form.lname.$error.required }"> 
      <label for="username">Last name</label> 
      <input type="text" name="lname" id="Text1" class="form-control" ng-model="vm.user.lname" required /> 
      <span ng-show="form.lname.$dirty && form.lname.$error.required" class="help-block">Last name is required</span> 
     </div> 
     <div class="form-group" ng-class="{ 'has-error': form.username.$dirty && form.username.$error.required }"> 
      <label for="username">Username</label> 
      <input type="text" name="username" id="username" class="form-control" ng-model="vm.user.username" required /> 
      <span ng-show="form.username.$dirty && form.username.$error.required" class="help-block">Username is required</span> 
     </div> 
     <div class="form-group" ng-class="{ 'has-error': form.hashword.$dirty && form.hashword.$error.required }"> 
      <label for="hashword">Password</label> 
      <input type="hashword" name="hashword" id="hashword" class="form-control" ng-model="vm.user.hashword" required /> 
      <span ng-show="form.hashword.$dirty && form.hashword.$error.required" class="help-block">Password is required</span> 
     </div> 
     <div class="form-actions"> 
      <button type="submit" ng-disabled="form.$invalid || vm.dataLoading" class="btn btn-primary">Register</button> 
      <img ng-if="vm.dataLoading" src="data:image/gif;base64,..." /> 
      <a href="#/login" class="btn btn-link">Cancel</a> 
     </div> 
    </form> 
</div> 

</div> 

Регистрация контроллер/функция

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .controller('RegisterController', RegisterController); 

    RegisterController.$inject = ['UserService', '$location', '$rootScope', 'FlashService']; 
    function RegisterController(UserService, $location, $rootScope, FlashService) { 
     var vm = this; 

     vm.register = register; 

     function register() { 
      vm.dataLoading = true; 
      UserService.Create(vm.user) 
       .then(function (response) { 
        if (response.success) { 
         FlashService.Success('Registration successful', true); 
         $location.path('/login'); 
        } else { 
         FlashService.Error(response.message); 
         vm.dataLoading = false; 
        } 
       }); 
     return false; 
     } 
    } 

})(); 
+1

Пожалуйста, покажите свой метод 'UserService.Create'. Откуда вы знаете, что он не делает запрос POST? Что говорит вам консоль? – iulian

+0

Консоль пуста, когда я делаю это еще, когда я закручиваю ее, она работает, и обновляется api. –

+0

Вы возвращаете false в конце функции register? Если нет, то это ваша проблема, так как вы на самом деле представляете форму – Tomer

ответ

1

Как вы назначили свой контроллер к виду? Вы использовали синтаксис controller as? Например: <div ng-controller="RegisterController as vm">your view here </div> Вы назначаете функцию регистров vm, но vm - это только локальная переменная в функции контроллера, поэтому угловая функция не может использовать свои функции. Назначение локальной переменной vm является хорошей практикой, лучше, чем использование $ scope во всем мире, но это все еще только локальная переменная внутри области функции контроллера. Если вы назначите ваш контроллер для просмотра и переименования вашего контроллера (<div ng-controller="RegisterController as vm">), тогда он будет работать.

+0

Хорошо, я добавил это. Он по-прежнему не пишет api по какой-то причине. Что вы подразумеваете под назначением моего контроллера для просмотра? missing –

+0

Можете ли вы подтвердить, что вы можете дойти до функции регистрации? Вы можете назначить контроллер двумя способами через '$ routeProvider' или через' ng-controller', это означает, что вы можете выбрать, какой cont роль ролика должна использоваться в определенном виде. Не могли бы вы поделиться с нами всем кодом формы? –

+0

спасибо и да, я могу достичь функции регистрации. Просто попытайтесь понять, почему сообщение отправляется неправильно, если вообще –

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