问题描述
尝试使用键/值映射来确定是否应显示角度控制元素:
但我收到一个例外:
angular.js:6173 TypeError: fnPtr is not a function
at Object.elementFns [as get] (angular.js:6802)
at Object.$get.Scope.$digest (angular.js:8563)
at Object.$get.Scope.$apply (angular.js:8771)
at angular.js:986
at Object.invoke (angular.js:2873)
以这种方式使用范围是否非法?
如何使用键/值映射来确定是否应显示元素?
该映射将在运行时更新,因此为了确保此更新反映在UI上,我需要包括apply()
方法?
小提琴代码:
<div ng-app="myapp" ng-controller="FirstCtrl">
<table class="table table-striped">
<tr ng-repeat="person in people">
<td ng-show="errorMap('1')">{{ person.first + ' ' + person.last }}</td>
</tr>
</table>
</div>
var myapp = angular.module('myapp', []);
myapp.controller('FirstCtrl', function ($scope) {
var errorMap = new Object()
errorMap['1'] = 'true'
errorMap['2'] = 'false';
$scope.errorMap = errorMap
$scope.people = [
{ id: 1, first: 'John', last: 'Rambo' },
{ id: 2, first: 'Rocky', last: 'Balboa' },
{ id: 3, first: 'John', last: 'Kimble' },
{ id: 4, first: 'Ben', last: 'Richards' }
];
});
1楼
errorMap('1')
不是函数,而是对象。
因此您可以执行以下操作:
ng-show="errorMap['1']"
2楼
您试图在您的作用域上调用一个名为errorMap
。
使用方括号进行访问。
<div ng-app="myapp" ng-controller="FirstCtrl">
<table class="table table-striped">
<tr ng-repeat="person in people">
<td ng-show="errorMap['1']">{{ person.first + ' ' + person.last }}</td>
</tr>
</table>
</div>