尝试使用键/值映射来确定是否应显示角度控制元素:
http://jsfiddle.net/9fR23/181/
但我收到一个例外:
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' }
];
});
答案 0 :(得分:1)
errorMap('1')
不是一个函数,它是一个对象。所以你可以这样做:
ng-show="errorMap['1']"
答案 1 :(得分:0)
您正在尝试在范围内调用名为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>