javascript - 单击不改变 View

标签 javascript jquery angularjs

在这个 fiddle 中:

http://jsfiddle.net/9fR23/187/

当我点击 div 元素“翻转!”时,表格元素没有被隐藏。当我更改由 ng-show

确定的结构状态时,元素应该隐藏起来

map 正在更新,但似乎没有应用?

我尝试在调用翻转时添加 $scope.$apply 以阻止,但结果相同。如何在底层 map 数据结构发生变化时更新 ng-show 的状态?

fiddle 代码:

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

更新:我将 json 更改为包含值 true 、 false 而不是“true”、“false”。但同样的结果。更新 fiddle :http://jsfiddle.net/9fR23/188/

更新代码:

errorMap['1'] = true
 errorMap['2'] = false;

最佳答案

我已经编辑了你的 fiddle :

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>

Javascript

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)

    }
});

等待您的反馈

关于javascript - 单击不改变 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31877683/

相关文章:

javascript - 如何检查文件夹中是否有重复文件,而不使用 glob/listdir/etc.. 比较文件名?

javascript - 将子状态值传递给父状态数组

javascript - 定时器启动按钮

javascript - 未捕获的范围错误: Maximum call stack size exceeded in Chrome

javascript - 在此示例中,我如何从 jquery/javascript 获取 div childs?

angularjs - 在 Angular.js 中,是否可以用其内容替换 ng-switch 指令元素?

javascript - Chart.js 无法在 Heroku 上正确部署

javascript - SlickGrid.js 视口(viewport)可见性切换 Internet Explorer 问题

javascript - 是否有一个 jQuery 选择器可以查找不存在的子字符串?

javascript - 在 Angular 中将数据附加到 $scope 的不同方法