Javascript作用域在angular SPA应用程序中不起作用

Javascript作用域在angular SPA应用程序中不起作用,javascript,html,angularjs,scope,Javascript,Html,Angularjs,Scope,我有一个角度SPA,index.html包含 var app = angular.module('app', ['ngRoute']); app.config(function ($routeProvider , $locationProvider) { $routeProvider .when('/', {

我有一个角度SPA,
index.html
包含

var app = angular.module('app', ['ngRoute']);   



        app.config(function ($routeProvider , $locationProvider) {         
            $routeProvider                                     
            .when('/', {                      
               templateUrl: 'home.html',                         
               controller: 'homeController'                    
           })                    
            .when('/login', {                     
               templateUrl: 'login.html',                        
               controller: 'loginController'                    
           })                    
     }); 


    app.controller('homeController', function ($scope) {            
            $scope.message = 'Welcome';        
    }); 

    app.controller('loginController', function ($scope) {            
            $scope.message = 'Login';            
    }); 



  <div ng-view></div> 
我的问题是,在
login.html
文件中,它没有向
警报(“嘿,sup?”)发出警报,它不会提醒用户名

我猜javascript范围有问题,因为在
index.html
中有一个,在
login.html
中有一个

如果我做一个简单的

<button onclick="hey()"> Click </button>

function hey(){    
    alert("hey");    
}
点击
函数hey(){
警惕(“嘿”);
}
我得到
未捕获的引用错误:hey未定义

那么javascript的问题是什么?我如何解决这个问题


谢谢

既然你用的是angular,那么用angular的东西做这个怎么样

app.controller('loginController', function ($scope) {            
        $scope.message = 'Login'; 
        $scope.loginData = {};
        $scope.hey = function(){
            alert('hey '+$scope.loginData.username);
        }           
}); 

<input type="text"  id="username" name="username" ng-model = "login.Data.username">
<input type="password" id="password" name="password" ng-model="loginData.password">       
<button type="submit" id="login" ng-click="hey()"> Login </button>
app.controller('loginController',函数($scope){
$scope.message='Login';
$scope.loginda={};
$scope.hey=函数(){
警报('hey'+$scope.loginda.username);
}           
}); 
登录
通过使用表单验证,在网上很容易找到基本的东西。
如果您需要向服务器发出请求,请使用google$http获取基本信息。

handleButtonPress函数close-bracket丢失。在进行web开发时,请始终确保检查JavaScript控制台是否存在错误。@AravindSivam我忘了粘贴它,因此,在我的代码中有。我也在SO中修复了它。仍然没有解决我的问题您无法从
FormData
对象中读取数据…当您将某个内容转换为JSON字符串时,它就是一个字符串,并且没有
username
属性@昆汀,谢谢。但是,由于一个按钮刚刚被点击,它至少应该做最简单的事情,并向“alert”(“嘿,sup?”)发出警报`您是对的,但我的问题是在
login.html
中,javascript无法在单击按钮后执行简单的警报。我希望在任何情况下修复我的javascript,无论我是否使用angular操作我的表单。感谢这可能是因为您的DOM尚未加载,将javascript包装为此处公认的答案:但是我警告您,如果您不了解angular的基本知识,混合使用原始js和angular不是一个好主意:)
app.controller('loginController', function ($scope) {            
        $scope.message = 'Login'; 
        $scope.loginData = {};
        $scope.hey = function(){
            alert('hey '+$scope.loginData.username);
        }           
}); 

<input type="text"  id="username" name="username" ng-model = "login.Data.username">
<input type="password" id="password" name="password" ng-model="loginData.password">       
<button type="submit" id="login" ng-click="hey()"> Login </button>