2015-11-25 2 views
0

Я относительно новичок в AngularJS и javascript. Будьте милостивы при ответе.ngSubmit не запускает функцию в контроллере

Я пытаюсь создать одно приложение-образец, в котором я хочу установить контроллеры. MainController, который всегда будет выступать в роли родительского контейнера, который отобразит меню и имя пользователя сверху, если пользователь выполнит вход. На данный момент я проверяю, хранится ли пользователь в localStorage.

Каждая страница будет иметь свой собственный контроллер, который будет делать конкретные вещи.

Я застрял в ng-submit и почему его не работает?

Любая помощь приветствуется.

index.html

<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-resource.js"></script> 
    <script src="angularapp.js"></script> 
</head> 
<body ng-app="myAngularApp"> 
    <div ng-controller="MainController"> 
    <div ng-show="isLoggedIn">Menu</div> 
     <div ng-view> 
     </div> 
    </div> 
</body> 

login.html

<from ng-submit="login()"> 
    <input type="text" id="username" ng-model="username"></input> 
    <input type="password" id="password" ng-model="password"></input> 
    <input type="submit" value="submit" id="submit" ng-submit="login()"></input> 
</form> 

angularapp.js

angular.module('myAngularApp',['ngRoute','ngResource']) 
.config(['$routeProvider',function($routeProvider){ 

    $routeProvider.when('/home',{ 
     controller:'SubController', 
     templateUrl:'templates/home.html' 
    }) 
    .when('/login',{ 
     controller:'MainController', 
     templateUrl:'templates/login.html' 
    }); 
}]) 
.controller('MainController',['$scope','$window','userService',function($scope,$window,userService){ 
    $scope.isLoggendIn=userService.isLoggedIn; 
    console.log('here I come'); 
    $scope.username=''; 
    $scope.password=''; 
    $scope.login=function(){ 
     alert('Ignored???'); 
     $window.localStorage['myUser']={username:$scope.username,password:$scope.password}; 
     consoel.log('user is logged in now'); 
    }; 
}]) 
.controller('SubController',['$scope',function($scope){ 
    $scope.myContent='Contenst to show after logged in'; 
}]) 
.service('userService',['$window',function($window){ 
    var self=this; 
    self.isLoggedIn=function(){ 
     if($window.localStorage['myUser']) 
      return true; 
     else 
      return false; 
    }; 
}]); 
+1

У вас есть различные функции там нг подать = «отправить()», нг подать =» login() " –

+0

Спасибо u @ElvinValiev Я попробовал изменить submit для входа. все еще не работает. все места в login.html и angularapp.js также. –

+0

Взгляните на мой ответ, вы также должны изменить ng-submit на ng-click в своем вводе. –

ответ

3

Пожалуйста, измените код. Кажется, вы совершили орфографическую ошибку.

<from ng-submit="submit()"> 

к:

<form ng-submit="submit()"> 

Также замените следующий код.

<input type="submit" value="submit" id="submit" ng-click="submit()"></input> 
+1

Это не единственная опечатка в коде, OP должен быть более осторожным, и это страшно, только вы заметили это;) – maurycy

+0

Да, я знаю, что обновил свой ответ – Dilip

+0

@DilipN много благодарен .... !!! Может быть, вам действительно нужно посторонние, чтобы все было в порядке. потратил 4 часа на это :(вы предлагаете какой-либо инструмент для повышения производительности в html & angular? –

0

Изменить код:

<input type="submit" value="submit" id="submit" ng-submit="login()"></input> 

Должно быть, как показано ниже:

<input type="submit" value="submit" id="submit" ng-click="submit()"></input> 
+0

'ng-submit' даже не должно быть там,' input # type: submit' должен вызывать 'ng-submit' по форме – maurycy

+0

Да, вы являются правильными. Его также можно удалить. –

0

Я думаю, что есть проблема в вашем login.html. удалите логин(), потому что у вас есть сообщение()

<from ng-submit="submit()"> 
    <input type="text" id="username" ng-model="username"></input> 
    <input type="password" id="password" ng-model="password"></input> 
    <input type="submit" value="submit" id="submit"></input> 
</form> 
+0

' Ankh

1

Нет необходимости ng-submit="login()" в этом месте type="submit не прийти и последний из button не input

<from ng-submit="submit()"> 
    <input type="text" id="username" ng-model="username"></input> 
    <input type="password" id="password" ng-model="password"></input> 
    <button type="submit" value="submit" id="submit"></button> 
</form> 
+0

Это не ответ, это комментарий к функциям – maurycy

+0

Извините @maurycy У меня нет привилегии комментировать. –

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