2015-09-23 4 views
1

Ze HTML:Почему моя функция углового контроллера не вызвана?

<body ng-app="ReporterApplication" ng-controller="BootstrapController as bootstrap"> 
     <div><% boostrap.user %></div> 
     <div id="pagePreloader"></div> 

     <div ng-if="!bootstrap.user.logged" ng-controller="LoginController as login" class='site-wrapper-login'> 

      <form role="form" name="login" class="form-login"> 

       <div class="logo-wrapper"> 
        <img class="logo" src="/resources/images/logo.png"> 
        <div class="logo-text"> 
         <div class="reporter">Reporter</div> 

         <div class="application">Internal Application</div> 
        </div> 

       </div> 

       <div class="icon-input large"> 
        <i class="icon fa fa-user"></i> 
        <input ng-model="login.username" type="text" name="reg_username" class="input-text" id="username" placeholder="Enter Username"> 
       </div> 

       <div class="icon-input large"> 
        <i class="icon fa fa-lock"></i> 
        <input ng-model="login.password" type="password" name="reg_password" class="input-text" id="password" placeholder="Enter Password"> 
       </div> 

       <button class="button full large" ng-click="login.submit()">Login</button> 

      </form> 

     </div> 

и зе rezpective JS:

Application.controller('LoginController', ['$scope', 'ServerActions', function($scope, ServerActions) 
{ 
    console.log('WE LOGIN!'); 
    var login = this; 

    login.username = ""; 
    login.password = ""; 

    login.submit = function() { 
     console.log('SUBMIT'); 
     ServerActions.fetchData('login.action', {username: login.username, password: login.password}).then(
      function (response) { 
       console.log('SUBMIT SUCCESS'); 
      } 
     ); 
    } 
}]); 

По какой-то причине моей представить функцию не дозвонились. Почему это? Что я делаю не так? Почему бог ненавидит меня!?! ??! Есть ли что-то в том, что стеки контроллеров мешают тому, как я ожидаю, что код будет работать?

+2

Вы должны определить свойства и методы на '' '$ scope''' например: '' '$ scope.submit = function() {...' '' – Grievoushead

+0

Попробуйте использовать запрос на отправку пароля –

+0

@Grievoushead Использование '$ scope' действительно сделает триггер функции отправки, но не решает проблему под рукой – CodingIntrigue

ответ

3

<form name=login> Это фактически создает глобальную переменную name из вашего элемента формы, поэтому она противоречит имени, которое вы указали на свой контроллер. Либо удалить имя из формы:

<div ng-controller="LoginController as login" class='site-wrapper-login'> 
    <form role="form" class="form-login"> 
    </form> 
</div> 

Или переименовать контроллер в качестве переменной:

<div ng-controller="LoginController as loginCtrl"> 

Example Fiddle

+0

да действительно. Большое спасибо за такой хороший ответ, мой хороший сэр! –

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