簡體   English   中英

如果屬性不存在,則不顯示對象的數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM