Javascript 视图不随单击而更改

Javascript 视图不随单击而更改,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,在这把小提琴中: 当我点击div元素“Flip!”时,表元素没有被隐藏。当我改变由ng show 地图正在更新,但似乎未应用 我尝试在调用flip时将$scope.$apply添加到块中,但结果相同。当基础地图数据结构更改时,如何更新ng show的状态 小提琴代码: <div ng-app="myapp" ng-controller="FirstCtrl"> <table class="table table-striped"> <tr

在这把小提琴中:

当我点击div元素“Flip!”时,表元素没有被隐藏。当我改变由
ng show

地图正在更新,但似乎未应用

我尝试在调用flip时将
$scope.$apply
添加到块中,但结果相同。当基础地图数据结构更改时,如何更新ng show的状态

小提琴代码:

<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 ng-click="flipView()">Flip!</div>

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

    $scope.flipView = function(){
        alert('flipped')
        $scope.errorMap['1'] = 'false'
        $scope.$apply
    }
});

我编辑了你的小提琴:

HTML

<div ng-app="myapp" ng-controller="FirstCtrl">
    <table class="table table-striped">
        <tr ng-repeat="person in people">
            <td ng-show="errorMap">{{ person.first + ' ' + person.last }}</td>
        </tr>
    </table>

    <div ng-click="flipView()">Flip!</div>

</div>

等待你的反馈

只是有点语法错误。在
错误映射([1])
中有
()
。没有这个,一切都好

<td ng-show="errorMap[1]">{{ person.first + ' ' + person.last }} </td> 
{{person.first+''+person.last}
此外,我认为一个简单的布尔值就可以做到这一点


在您的视图中,有一个分叉的,您将
errorMap
视为一个函数,但它是一个对象文本。此外,您正在传递一个整数,但对象的键是字符串

试一试

{{person.first+''+person.last}

var myapp = angular.module('myapp', []);
myapp.controller('FirstCtrl', function ($scope) {
     $scope.errorMap=true;


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

    $scope.flipView = function(){
        alert('flipped');
        $scope.errorMap = !$scope.errorMap; //this is actual flipping (show/hide)

    }
});
<td ng-show="errorMap[1]">{{ person.first + ' ' + person.last }} </td> 
<td ng-show="errorMap['1']">{{ person.first + ' ' + person.last }}</td>