javascript - 我如何在 angularJS 中实现按 url 值过滤?

标签 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('/');

Json:

{
    "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: Cannot read property 'seo_name' of null

请帮我解决这个问题:)

UPD I resolve TypeErro, but filtering still does not work

最佳答案

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

 $scope.categoryFilter = function (products){

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

关于javascript - 我如何在 angularJS 中实现按 url 值过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36584254/

相关文章:

javascript - AngularJS $filter 日期未按预期工作

javascript - 为什么在 "eliminate render-blocking resources"之后我得到的 PageSpeed 分数较低?

javascript - 获取元素源焦点 Angular

javascript - ng-disabled 每次单击按钮时都不会评估

java - 解析json并获取内部对象

javascript - 如何使用 angular ui bootstrap 在 pop 上显示 html?

mysql - Angular.js 将复选框值绑定(bind)到 mySQL 位

php - ajax,以 json 形式检索多维 php 数组

java - Realm 从 map 序列化数据

javascript - 将json多维转换为数组javascript