2013-06-28 3 views
1

Это как структурирована мой код:

Вид:

<form action="./?app,signin" method="post" id="signinform" name="signinform" novalidate vibrating loginform> 
(...) 
</form> 

JavaScript:

angular.module('loginApp', []) 
    .directive('loginform', function ($http) { 
     return function (scope, elm, attrs, ctrl) { 
      elm.submit(function (e) {    
       if ($(elm).hasClass('ng-valid')) { 
        console.log('X'); 
        $http.get('./?app,validateCredentials&username=admin&password=admin') 
         .success(function (d, s, h, c) { 
          console.log('A'); 

         }) 
         .error(function(d, s, h, c) { 
          console.log('B'); 
         }) 
        ; 
        e.preventDefault();   
       } 
      }); 
     } 
    })  
.controller('loginCtrl', function($scope, $filter, $window, $location, $http) { (...) 

' X 'регистрируется в консоли, но запрос $ http не работает. Любая идея почему?

+0

ли делается запрос? (Вкладка «Сеть» в веб-инспекторе Chrome или Safari.) – jpsimons

+0

Каков ваш сервер/сервер? – callmekatootie

ответ

4

Поскольку вы вызываете Угловой код внутри не-Angular обработчика событий, попробуйте обертывание запроса в scope.$apply():

elm.submit(function (e) { 
    if ($(elm).hasClass('ng-valid')) { 
    console.log('X'); 
    scope.$apply(function() { 
     $http.get('./?app,validateCredentials&username=admin&password=admin') 
     .success(function (d, s, h, c) { 
      console.log('A'); 

     }) 
     .error(function(d, s, h, c) { 
      console.log('B'); 
     }) 
     ; 
    }); 
    e.preventDefault(); 
    } 
});