Ich habe ein JS-Objekt so deklariert
$scope.items = {};
Ich habe auch eine $ http-Anfrage, die dieses Objekt mit Elementen füllt. Ich möchte feststellen, ob dieses Element leer ist. Es scheint, dass ng-show dies unterstützt ... Ich gebe ein
ng-show="items"
und magisch funktioniert es, ich würde das auch gerne von einem Controller aus tun, aber ich kann es scheinbar nicht zum Laufen bringen. Es scheint, dass ich über das Objekt iterieren muss, um zu sehen, ob es irgendwelche Eigenschaften hat oder lodash oder Unterstrich verwendet .
Gibt es eine Alternative?
Ich habe es versucht
alert($scope.items == true);
Es wird jedoch immer false zurückgegeben, wenn das Objekt erstellt und mit gefüllt wird $http
, sodass es nicht so funktioniert.
angularjs
angularjs-scope
Martin
quelle
quelle
Antworten:
Die Verwendung eines leeren Objektliteral ist hier nicht erforderlich. Sie können null oder undefiniert verwenden:
Auf diese Weise
ng-show
sollte weiter funktionieren, und in Ihrem Controller können Sie einfach tun:Und in Ihren
$http
Rückrufen tun Sie Folgendes:quelle
$scope.items = {available: false}
, undng-show="items.available"
, und in dem Controller einfach zu überprüfenif (items.available) {...}
.Oder Sie könnten es einfach halten, indem Sie so etwas tun:
quelle
({} === $scope.items)
In einem privaten Projekt hat a diesen Filter geschrieben
Verwendung:
testen:
Grüße.
quelle
ein weiterer einfacher Einzeiler:
quelle
Wenn Sie die Elemente OBJ nicht gleich null haben konnten, können Sie Folgendes tun:
und in der Ansicht können Sie tun:
Du kannst tun
Nur wenn Ihr Browser ECMAScript 5 unterstützt. Beispielsweise unterstützt IE 8 diese Funktion nicht.
Siehe http://kangax.github.io/compat-table/es5/ für mehr Infos
quelle
Eine sauberere Version davon könnte sein:
Dabei ist das Ergebnis undefiniert, wenn keine Objekteigenschaft festgelegt ist.
quelle
Oder wenn Sie lo-dash verwenden: _.empty (Wert).
"Überprüft, ob der Wert leer ist. Arrays, Zeichenfolgen oder Argumente Objekte mit einer Länge von 0 und Objekte ohne eigene aufzählbare Eigenschaften werden als" leer "betrachtet."
quelle
Überprüfen Sie das leere Objekt
quelle
Sie können die Länge der Elemente überprüfen
quelle
items
es ein Objekt ist und Objekte.length
(normalerweise) keine Eigenschaft haben - Arrays haben sie