angular-Js:不能在同一个控制器的不同函数调用中访问数组元素
angular-Js: not able to access array elements in different function call within same controller
我只需要在register()
呼叫上存储$scope.user
中的数据,并尝试使用其数据元素登录。但没有成功。我用的是最简单的方法,我想可能还有其他的方法(比如localStorage, cookies等)。我是angular的新手,不知道如何实现它们。请帮我一下……
控制器:
var app = angular.module("app",[]);
app.controller("ctr",function($scope){
$scope.user = [{
fname:"",
lname: "",
username: "",
password: ""
}];
$scope.register = function(userData){
$scope.user.push(userData);
alert($scope.user.username); *//show undefined*
};
$scope.login = function(loginData){
if(loginData.username == $scope.user.username) {
alert("Login successfully!!");
}
else alert("Wrong user!");
};
});
视图:
<body ng-app="app">
<div ng-controller="ctr">
<table >
<tr>
<td><label>Username : </label></td>
<td><input type="text" ng-model="loginData.username" placeholder="Name" /></td>
</tr>
<tr>
<td><label>Password : </label></td>
<td><input type="password" ng-model="loginData.password" placeholder="Password" /></td>
</tr>
<tr>
<td colspan="2">
<input type="button" value="Login" ng-click="login(loginData)" class="save"/>
</td>
</tr>
</table>
<table >
<tr>
<td><label>First Name : </label></td>
<td><input type="text" ng-model="userData.fname" placeholder="First Name" /></td>
</tr>
<tr>
<td><label>Last Name : </label></td>
<td><input type="text" ng-model="userData.lname" placeholder="Last Name" /></td>
</tr>
<tr>
<td><label>Username : </label></td>
<td><input type="text" ng-model="userData.username" placeholder="Name" /></td>
</tr>
<tr>
<td><label>Password : </label></td>
<td><input type="password" ng-model="userData.password" placeholder="Password" /></td>
</tr>
<tr>
<td colspan="2"><input type="button" value="Register" ng-click="register(userData)" class="save"/></td>
</tr>
</table>
</div>
</body>
如果有人能帮我解决这个问题,我将非常感激。
你把userdata推到一个数组,你的$scope.user
是一个数组,而不是一个对象。试试这个:
$scope.user = {};
$scope.register = function(userData){
$scope.user = userData;
alert($scope.user.username);
};
由于变量$scope.user
是一个数组,您应该使用如下内容:
alert($scope.user[0].username)
你的if语句为假:
if(loginData.username == $scope.user.username) {
您的$scope.user
是一个数组,您应该首先搜索具有此用户名的对象,然后才能比较密码。
$scope.login = function(loginData){
//Filter your user array and find the user with given username
var user = $filter('filter')($scope.user, function (u) {return u.username === loginData.username;})[0];
//Compare login data
if (user == null) {
alert("User not found");
} else {
if(user.password == loginData.password) {
alert("User logged in");
} else {
alert("Wrong Password");
}
}
};
我没有机会测试我的答案,请给我一个反馈
相关文章:
- jQuery 无法使用 AJAX 调用访问函数内部的函数参数
- 无法访问字段'通过aspx页面上的javascript函数传递来自代码隐藏中函数调用的客户端id的s值(页面加载
- 是否可以在Javascript/Coffeescript中的属性访问期间自动调用函数调用
- 使用UI路由器访问从解析函数调用的服务中新状态的$stateParams
- 将Finuploader与ASP.NET Web表单一起使用.对严格模式调用方函数的访问被审查
- angularjs变量无法在函数调用外访问
- 在函数内部访问事件调用的JQuery对象
- Javascript:如何使用apply方法传递参数数组,然后在被调用的函数中访问它
- angular-Js:不能在同一个控制器的不同函数调用中访问数组元素
- 在javascript中,当一个自调用函数可以访问全局变量时,将全局变量传递给它的目的是什么?
- 不能从Angular材质对话框调用的函数中访问Angular变量
- 点击调用jquery函数并访问php
- 将this.constructor与构造函数调用一起使用以访问静态属性时是否存在兼容性问题
- JavaScript (node.js)内部函数调用时无法访问变量.now.js
- 从事件处理程序调用的javascript函数中访问父成员
- 如何在第二次函数调用中访问已选中的单选按钮的值
- 如何在jQuery click()函数中访问调用元素'
- 我可以调用JScript函数或访问JScript对象通过DLR在服务器端(ASP.Net)
- jQuery自调用函数无法访问变量
- 如何从函数本身之外的ajax调用访问数据