我如何通过angularJS中的url实现值的过滤?

时间:2016-04-12 21:19:34

标签: javascript angularjs json

我没有意识到通过url中获得的值进行过滤 过滤器:

$scope.categoryFilter = function (products){

                if ($routeParams.categorySlug == products.category.seo_name){
                    return;
                }else {
                    return $scope.products;
                }
            };

路线:

when('/products/category/:categorySlug', {
            controller: 'ProductsListController',
            controllerAs: 'vm',
            templateUrl: '/static/templates/products/products_index.html'
        }).otherwise('/');
杰森:

{
    "name": "pants Classic Pyjama",
    "category": {
        "id": 2,
        "name": "Белье",
        "description": "",
        "visible": true,
        "products_count": 0,
        "products_count_cache": 0,
        "category_id_name": "2",
        "seo_name": "bele",
        "seo_title": "",
        "seo_desc": "",
        "seo_keywords": "",
        "lft": 2,
        "rght": 5,
        "tree_id": 3,
        "level": 1,
        "parent": {},
    "id": 920

在模板中我使用它:

 <div class="catalog-item" ng-repeat="product in products |filter: categoryFilter">
        <div class="item-pre-title">
            Бесплатная доставка $150+
        </div>
        <div class="item-img">
            <a href="/products/{{ product.id }}/"><img ng-src="{{ product.picture[0].external_img_url }}" width="150px"
                                                       height="150px" alt=""></a>
        </div>
        <a href="/products/{{ product.id }}/" class="item-title">{{ product.name }}</a>
        <div class="item-price">
            <div class="price-old">{{ product.old_price }}</div>
            <b>{{ product.price }}</b>
        </div>
        <div class="item-footer">
            <a href="#" class="item-view"></a>
            <div class="item-sales-alert">
                Получить скиду
            </div>
        </div>
    </div>

控制台警告:

  

angular.js:11706 TypeError:无法读取属性&#39; seo_name&#39;为null

帮我解决一下:)

  

UPD我解决了TypeErro,但过滤仍无法正常工作

1 个答案:

答案 0 :(得分:1)

我解决了这个问题,而不是添加此代码,而不是旧的过滤器:

 $scope.categoryFilter = function (products){

                try {
                    if ($routeParams.categorySlug){
                       if ($routeParams.categorySlug == products.category.seo_name)
                            return products;
                    }else{
                        return $scope.products;
                    }
                }
                catch (TypeError) {
                   return;
                }};