无法设置未定义成员的属性
Cannot Set Property of Undefined Member
在AngularJS中继续前进,我在下面的// ERROR
行得到一个JavaScript错误。
为什么我得到Cannot set property 'show' of undefined
?
<html ng-app>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js">
</script>
<div ng-controller='DeathrayMenuController'>
<button ng-click='toggleMenu()'>Toggle Menu</button>
<ul ng-show='menuState.show'>
<li ng-click='stun()'>Stun</li>
<li ng-click='disintegrate()'>Disintegrate</li>
<li ng-click='erase()'>Erase from history</li>
</ul>
<div/>
<script>
function DeathrayMenuController($scope) {
$scope.menuState.show = false; // ERROR HERE
$scope.toggleMenu = function() {
$scope.menuState.show = !$scope.menuState.show;
};
}
</script>
</body>
</html>
您从未定义过$scope.menuState
。而不是考虑:
<html ng-app>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js"></script>
<div ng-controller='DeathrayMenuController'>
<button ng-click='toggleMenu()'>Toggle Menu</button>
<ul ng-show='menuState_show'>
<li ng-click='stun()'>Stun</li>
<li ng-click='disintegrate()'>Disintegrate</li>
<li ng-click='erase()'>Erase from history</li>
</ul>
<div/>
<script>
function DeathrayMenuController($scope) {
$scope.menuState_show = false;
$scope.toggleMenu = function() {
$scope.menuState_show = !$scope.menuState_show;
};
}
</script>
</body>
</html>
我在看同一本书的时候遇到了这个问题。我想我应该补充一下,下面的方法也可以:
<html ng-app>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js">
</script>
<div ng-controller='DeathrayMenuController'>
<button ng-click='toggleMenu()'>Toggle Menu</button>
<ul ng-show='menuState.show'>
<li ng-click='stun()'>Stun</li>
<li ng-click='disintegrate()'>Disintegrate</li>
<li ng-click='erase()'>Erase from history</li>
</ul>
<div/>
<script>
function DeathrayMenuController($scope) {
$scope.menuState = {show: false}; // ERROR HERE
$scope.toggleMenu = function() {
$scope.menuState.show = !$scope.menuState.show;
};
}
</script>
</body>
</html>
勘误表显示更正:http://oreilly.com/catalog/errata.csp?isbn=0636920028055
$scope.menuState.show = false; will give an undefined error
Added $scope.menuState = {} before to fix the issue i.e.
function DeathrayMenuController($scope) {
$scope.menuState = {}
$scope.menuState.show = false;
...
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 无法读取属性id成员路由
- 为什么可以在内部函数成员中访问对象引用,而不能在内部属性成员中访问
- 根据成员属性从数组中删除元素
- 对象属性不是在工厂成员函数内部创建的
- 获取成员数据模型中任何属性的属性类型
- 成员核心中的ARIA属性形成组件
- 如何注释“@只读但内部修改”;JSDoc中的成员/属性
- JS对象:如何在添加属性时动态命名成员
- 路由加载时运行成员控制器函数以设置控制复选框的属性
- 将类中HTMLElement成员的onclick属性设置为同一类的方法
- 无法设置未定义成员的属性
- 数组长度属性中未注册的成员
- 如何使用类名作为选择器获取类成员的数据属性
- fabric.js组成员'属性不更新
- javascript:私有成员和只读属性
- 成员函数之外的Javascript对象属性为null
- 成员控制器:计算的属性不重新计算已注入的属性
- __proto__为什么以及如何记住构造函数的旧属性's未定义的原型成员