Javascript TypeError:无法读取null的属性“0”
我正在从事一个使用Sails.js作为框架的NodeJS项目 我试图实现的是一个权限系统,其中每个组的权限由复选框设置,我使用AngularJS的典型表单 当我单击我的Sumbit按钮时,它会在浏览器控制台上抛出此错误:Javascript TypeError:无法读取null的属性“0”,javascript,angularjs,node.js,sails.js,typeerror,Javascript,Angularjs,Node.js,Sails.js,Typeerror,我正在从事一个使用Sails.js作为框架的NodeJS项目 我试图实现的是一个权限系统,其中每个组的权限由复选框设置,我使用AngularJS的典型表单 当我单击我的Sumbit按钮时,它会在浏览器控制台上抛出此错误: angular.1.3.js:11594 TypeError: Cannot read property '0' of null at $parseFunctionCall (angular.1.3.js:12333) at callback (angular.1.3.js:2
angular.1.3.js:11594 TypeError: Cannot read property '0' of null
at $parseFunctionCall (angular.1.3.js:12333)
at callback (angular.1.3.js:22949)
at Scope.$eval (angular.1.3.js:14383)
at Scope.$apply (angular.1.3.js:14482)
at HTMLFormElement.<anonymous> (angular.1.3.js:22954)
at HTMLFormElement.eventHandler (angular.1.3.js:3011)(anonymous function) @ angular.1.3.js:11594
下面是捕获信息并将其发布到create函数的代码
angular.module('GroupsModule').controller('GroupsController', ['$scope', '$http', 'toastr', function($scope, $http, toastr) {
$scope.createGroup = {
loading: false
};
$scope.createGroupForm = function(){
// Set the loading state (i.e. show loading spinner)
$scope.createGroup.loading = true;
// Submit request to Sails.
$http.post('/createGroup', {
groupName: $scope.createGroupForm.groupName,
canViewUsers: $scope.createGroupForm.canViewUsers,
canEditUsers: $scope.createGroupForm.canEditUsers,
canPromoteToStaff: $scope.createGroupForm.canPromoteToStaff,
canViewNotes: $scope.createGroupForm.canViewNotes,
canEditPermissions: $scope.createGroupForm.canEditPermissions
})
.then(function onSuccess(sailsResponse){
window.location = '/groups';
})
.catch(function onError(sailsResponse){
// Handle known error type(s).
// If using sails-disk adpater -- Handle Duplicate Key
var groupAlreadyExists = sailsResponse.status == 409;
if (groupAlreadyExists) {
toastr.error('That group already exists', 'Error');
}
})
.finally(function eitherWay(){
$scope.createGroup.loading = false;
})
文章中有右括号,但格式不正确
最后是表单本身的代码:
<!--STYLES-->
<link rel="stylesheet" href="/styles/angular-toastr.css">
<link rel="stylesheet" href="/styles/bootstrap.3.1.1.css">
<link rel="stylesheet" href="/styles/importer.css">
<link rel="stylesheet" href="/styles/style.css">
<link rel="stylesheet" href="/styles/theme.css">
<link rel="stylesheet" href="/styles/theme.min.css">
<!--STYLES END-->
<body ng-app="DashboardModule" ng-controller="DashboardController" ng-cloak>
<div class="bs-docs-section clearfix">
<div class="row">
<div class="bs-component">
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">Insomnia eSports</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a href="/groups"><i class="fa fa-users" aria-hidden="true"></i> Group Management </a></li>
</ul>
<!--
<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
-->
<ul class="nav navbar-nav navbar-right">
<li><a href="/logout">Sign Out</a></li>
</ul>
</div>
</div>
</nav>
</div>
</div>
</div>
<form ng-submit="createGroupForm()" id="create-group-form" class="form-signin" name="createGroupForm">
<h2 class="form-signin-heading">Create an account</h2>
<div class="row">
<!-- Group Name -->
<label>Group Name</label>
<input type="text" class="form-control" placeholder="Group Name" name="groupName" ng-model="createGroupForm.name" ng-maxlength="25" required>
</div>
<!-- Can View Users -->
<label>View Users?</label>
<input type="checkbox" name="canViewUsers" ng-model="canViewUsers.value">
<!-- Can View Users -->
<label>Edit Users?</label>
<input type="checkbox" name="canEditUsers" ng-model="canEditUsers.value">
<!-- Can Promote To Staff -->
<label>Promote to Staff?</label>
<input type="checkbox" name="canPromoteToStaff" ng-model="canPromoteToStaff.value">
<!-- Can Promote To Staff -->
<label>Can view notes?</label>
<input type="checkbox" name="canViewNotes" ng-model="canViewNotes.value">
<!-- Can Promote To Staff -->
<label>Can edit permissions?</label>
<input type="checkbox" name="canEditPermissions" ng-model="canEditPermissions.value">
<br/>
<!-- Disable signup button until the form has no errors -->
<button class="btn btn-success btn-lg btn-block" type="submit" ng-disabled="createGroupForm.$invalid">
<span ng-show="!createGroupForm.loading">Create Group</span>
<span class="overlord-loading-spinner fa fa-spinner" ng-show="createGroupForm.loading" ></span>
<span ng-show="createGroupForm.loading">Preparing your new group...</span>
</button>
<input type="hidden" name="_csrf" value="<%= _csrf %>" />
</form>
<!--SCRIPTS-->
<script src="/js/dependencies/sails.io.js"></script>
<script src="/js/dependencies/angular.1.3.js"></script>
<script src="/js/dependencies/Base64.js"></script>
<script src="/js/dependencies/angular-toastr.js"></script>
<script src="/js/dependencies/compareTo.module.js"></script>
<script src="/js/public/signup/SignupModule.js"></script>
<script src="/js/public/groups/GroupsModule.js"></script>
<script src="/js/private/dashboard/DashboardModule.js"></script>
<script src="/js/public/homepage/HomepageModule.js"></script>
<script src="/js/private/dashboard/DashboardController.js"></script>
<script src="/js/public/groups/GroupsController.js"></script>
<script src="/js/public/homepage/HomepageController.js"></script>
<script src="/js/public/signup/SignupController.js"></script>
<!--SCRIPTS END-->
</body>
我错误地在createGroupForm上使用$scope而不是仅在createGroup上解决了这个问题。更正的代码位如下所示: 而不是:
$scope.createGroupForm.canViewUsers
使用:
我错误地在createGroupForm上使用$scope而不是仅在createGroup上解决了这个问题。更正的代码位如下所示: 而不是:
$scope.createGroupForm.canViewUsers
使用:
向我们显示代码…请添加相关代码,可能是模板和控制器/组件。看起来您试图像访问数组一样访问单个值,但同样,如果没有代码片段,则无法说出任何内容。@TomaszKaminski我已编辑了我的代码,很抱歉,我还不习惯StackOverflow的格式,我已经添加了来自hastebin的代码,使用SO格式很容易。。。粘贴代码,选择它,按编辑器上的“代码”即可。至于您的问题,仍然不清楚发生在何处以及原因,我想这与响应有关。向我们显示代码…请添加相关代码,可能是模板和控制器/组件。看起来您试图访问单个值,好像它是一个数组,但同样,如果没有一段代码,我什么也说不出来。@托马斯卡明斯基我已经编辑了我的代码,很抱歉我还不习惯StackOverflow的格式,我已经从hastebin添加了代码,使用SO格式很简单。。。粘贴代码,选择它,按编辑器上的“代码”即可。至于你的问题,现在还不清楚它发生在哪里,为什么发生,我想这与反应有关。
$scope.createGroup.canViewUsers