当前位置: 代码迷 >> JavaScript >> 与地图一起使用时,AngularJS ng-show不触发
  详细解决方案

与地图一起使用时,AngularJS ng-show不触发

热度:85   发布时间:2023-06-07 11:40:39.0

尝试使用键/值映射来确定是否应显示角度控制元素:

但我收到一个例外:

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' }
    ];
});

errorMap('1')不是函数,而是对象。 因此您可以执行以下操作:

ng-show="errorMap['1']"

您试图在您的作用域上调用一个名为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>
  相关解决方案