[英]Don't display object's data if property doesn't exist
如果對象缺少屬性,我想選擇不顯示對象的數據。 我正在從REST API調用數據,如果該商品不再可供購買,則該REST API會從對象中刪除price_1
屬性。 我已經對delete
進行了一些研究,但據我了解,這僅用於刪除對屬性而不是對象的引用。 我不確定如果屬性不存在是否可以完全刪除對象,但這將是理想的解決方案。 我還想知道該解決方案是否更適合作為自定義過濾器。
我嘗試了以下方法:
angular.module('foldsApp.productModule', [])
.controller('ProductsController', ['$scope', '$log', 'APIService', function ($scope, $log, APIService) {
$scope.products = {};
APIService.getData()
.success(function(res) {
$scope.products = res.results;
for (price in $scope.products) {
if($scope.products[price].price_1 === 'undefined') {
// remove object?
}
}
})
.error(function(data, status, headers, config) {
$log.log('error: ' + data);
});
}]);
現在, if($scope.products[price].price_1 === 'undefined')
等於false
。 我不完全確定為什么會這樣,但是我想是因為price_1
在$scope.products
大多數對象上確實存在,而且我不確定該如何使用。 這是我對“高級” JavaScript的首次嘗試,因此有些事情困擾着我。 非常感謝任何有用的資源,謝謝。
HTML,如果這很重要:
<ul>
<li dir-paginate="product in products | itemsPerPage: 30">
<a href="{{ product.link_1 }}"><img src="{{ product.category_product_image_placeholder_image }}" /></a>
<br>
{{ product.product_name_text }}
<br>
<strong>{{ product.price_1 | currency }}</strong>
</li>
</ul>
特別要檢查未定義,您應該使用typeof variable === 'undefined'
:
所以:
if(typeof $scope.products[price].price_1 === 'undefined'){
delete $scope.products[price];
}
delete會刪除對象的屬性(看起來像您的屬性),如果在其他任何地方都未引用它們,則垃圾收集器會選擇它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.