In dieser Geige:

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

Die Tabellenelemente werden nicht ausgeblendet, wenn ich das div-Element "Flip!" Drücke. Die Elemente sollten ausgeblendet werden, wenn ich den Status der Struktur ändere, der durch ng-show bestimmt wird.

Die Karte wird aktualisiert, scheint aber nicht angewendet zu werden?

Ich habe versucht, $scope.$apply zum Blockieren hinzuzufügen, wenn Flip aufgerufen wird, aber das gleiche Ergebnis. Wie aktualisiere ich den Status von ng-show, wenn sich die zugrunde liegende Kartendatenstruktur ändert?

Geigencode:

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

Update: Ich habe den json so geändert, dass er die Werte true, false anstelle von 'true,' false 'enthält. Aber das gleiche Ergebnis. Aktualisierte Geige: http://jsfiddle.net/9fR23/188/

Aktualisierter Code:

errorMap['1'] = true
 errorMap['2'] = false;
1
blue-sky 7 Aug. 2015 im 15:26

3 Antworten

Beste Antwort

Aus Ihrer Sicht behandeln Sie errorMap als Funktion, aber es ist ein Objektliteral. Sie übergeben auch eine Ganzzahl, aber die Schlüssel für das Objekt sind Zeichenfolgen

Versuchen

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

DEMO

0
charlietfl 7 Aug. 2015 im 12:33

Ich habe deine Geige bearbeitet:

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)

    }
});

Warte auf ihr Feedback

2
Tomislav 7 Aug. 2015 im 12:32

Es war nur ein kleiner Syntaxfehler. Sie haben ( ) und errorMap([1]). Ohne diesen ist alles in Ordnung.

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

Außerdem denke ich, dass ein einfacher Boolescher Wert den Trick machen könnte.

Es gibt die gegabelte Geige

1
Pierre-Alexandre Moller 7 Aug. 2015 im 12:33