【发布时间】:2015-12-12 13:15:21
【问题描述】:
我有这个 index.html,其中有一个导航栏,在我的单页应用程序的所有页面上都可以看到。导航栏容器 div 使用 ng-controller="LoginCtrl" 值,因此我还将从我的 Angular 应用程序 (app.js) 中包含该控制器
由于某种原因,当通过ng-click 指令调用doLogin() 时,通过ng-model 绑定的变量username 和password 显示为未定义?那是在我在绑定到我的控制器变量的文本框中键入值之后。
index.html
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">
<link href="stylesheet.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.4/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.4/angular-route.min.js"></script>
<base href="/">
<script src="https://cdnjs.cloudflare.com/ajax/libs/ngStorage/0.3.9/ngStorage.js"></script>
<script src="https://cdn.socket.io/socket.io-1.3.5.js"></script>
</head>
<body>
<div ng-controller="LoginCtrl">
<nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#">TriviaAttack!</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<form ng-if="!loggedIn" id="loginForm" class="navbar-form navbar-right">
<div class="form-group">
<input type="text" placeholder="Email" class="form-control" ng-model="username">
</div>
<div class="form-group">
<input type="text" placeholder="Password" class="form-control" ng-model="password">
</div>
<div class="form-group">
<button type="submit" class="btn btn-success" ng-click="doLogin()">Sign In</button>
</div>
</form>
</div>
</div>
</nav>
<div ng-view></div>
</div>
<script src="./app/app.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js">
</body>
</html>
app.js
...
myApp.controller('LoginCtrl', function($rootScope, $location, AuthService, AuthToken) {
$rootScope.doLogin = function() {
console.log($rootScope.username);
console.log($rootScope.password);
}
});
...
【问题讨论】:
-
使用
$scope而不是$rootScope。对于应用程序,我们应该让我们的$rootScope尽可能的薄。 -
嗨,$scope 也不起作用,都说未定义。
-
分享更多代码或创建小提琴。我看不到你的模块声明
-
这是我的模块声明 var myApp = angular.module('myApp',['ngRoute', 'ngStorage']);
-
这能回答你的问题吗? Ng-model does not update controller value
标签: javascript html angularjs twitter-bootstrap