2016-04-14 10 views
0

Also hier ist mein Problem, ich benutze AngularJS und ich bekomme JSON von PHP und zeige alle meine Daten mit ng-repeat. Ich habe das schon getan.Zeige verschiedene Knöpfe, die Array-Werten entsprechen

Jetzt möchte ich überprüfen, ob einige Daten in "Array1" sind und wenn ja, ändern Sie die entsprechenden Daten von der ng-Wiederholung. Ich weiß es wirklich seltsam klingt, aber lassen Sie mich mit dem Code ein Beispiel setzen:

Hier array1 Werte

{ 
     "23", 
     "48", 
     "51" 
    } 

Also, wenn ich die Daten bekommen, es ist so etwas wie dieses:

{ 
    id : "23", 
    name: "example" 
} 

Und für jedes JSON-Objekt ng-wiederholen sie alle wie dieses ich verwende anzuzeigen:

<div ng-model="data.posts" ng-repeat="post in posts | orderBy:'-' | unique: 'id'"> 
    ... 
     <button>This button will show if "id" matches</button> 
     <button>This button will show if "id" not matches</button> 
    </div> 

ich vergleichen wollen, wenn n id von array1 stimmt mit einer ID aus den JSON-Daten überein und wenn sie übereinstimmt, zeige eine Schaltfläche an und wenn nicht, zeige andere.

Ich bin auf wie 2 Wochen, und ich kann nicht das Problem gelöst, und ich sehe keine Möglichkeit, es zu bekommen.

Thx zum Lesen und Entschuldigung für mein schlechtes Englisch!

+0

Ich denke, die Sie verwenden möchten [.indexOf()] (http://www.w3schools.com/jsref/ jsref_indexof_array.asp). – senschen

+0

Array1 ist Array oder Objekt oder Array von Objekt? ["23", "48"] oder {"23", "48"} oder [{}, {}] –

+0

Array 1 ist {} (das zweite) –

Antwort

1

sollte Ihr array1 ein Array sein und eine Funktion im Controller hinzufügen Spiel-ID zu überprüfen.

in Controller:

$scope.array1 = ["23","48","51"]; 
$scope.checkInArray1 = function(id) { 
    var index = $scope.array1.indexOf(id); 
    if(index < 0){ 
    return false; 
    } else { 
    return true; 
    } 
}; 

und in Ihrem html:

<button ng-if="checkInArray1(post.id)">This button will show if "id" matches</button><br> 
<button ng-if="!checkInArray1(post.id)">This button will show if "id" not matches</button> 
+0

das funktioniert tatsächlich, thx –

+0

Sie sind herzlich willkommen und froh, hier :) –

0

die Annahme, dass { "23", "48", "51"} ein Array sein sollte [ "23", "48", "51"] Sie so etwas tun könnte: Arbeits Fiddle: http://jsfiddle.net/ravenous52/rgyom4yd/

myApp.controller('MyCtrl', ['$scope', 
 
    function($scope) { 
 
    $scope.knownIds = ["23", "48", "51"]; 
 
    $scope.data = { 
 
     posts: [{ 
 
     id: "23", 
 
     name: "example23" 
 
     }, { 
 
     id: "51", 
 
     name: "example51" 
 
     }, { 
 
     id: "99", 
 
     name: "example99" 
 
     }] 
 
    } 
 
    } 
 
]);
<section ng-controller="MyCtrl"> 
 
    <div ng-repeat="post in data.posts"> 
 
    <button ng-show="knownIds.indexOf(post.id) >-1">This button will show if "id" matches</button> 
 
    <button ng-hide="knownIds.indexOf(post.id) >-1">This button will show if "id" not matches</button> 
 
    </div> 
 
</section>

0

https://jsfiddle.net/alair016/4wc44on1/

<div ng-app='myApp' ng-controller="MyCtrl"> 
    <div ng-model="data.posts" ng-repeat="post in data.posts"> 
     <button ng-if="array1.indexOf(post.id) >-1">{{post.name}} id matches</button> 
     <button ng-if="array1.indexOf(post.id) == -1">{{post.name}} id does not match</button> 
    </div> 
</div> 

var myApp = angular.module('myApp',[]) 
.controller('MyCtrl', ['$scope', function($scope) { 
    $scope.array1 = ["23","48","51"]; 
    $scope.data = { 
     posts : [ 
     { 
      id : "23", 
      name: "example" 
     }, 
     { 
      id: "24", 
      name:"second example" 
     } 
     ] 
    }; 
}]); 
Verwandte Themen