【问题标题】:multiple filters in angularjsangularjs中的多个过滤器
【发布时间】:2014-08-04 14:46:10
【问题描述】:

过去 9 个小时我一直在试图解决这个问题,我已经阅读了多个问题和 angular 文档,但我还没有找到解决方案。

文本字段工作得很好,选择字段只显示一个,并且按字母顺序....但是 当我在选择字段中选择某些内容时,所有内容都会从表格中删除。我必须重新加载页面才能恢复项目...

如果我选择“宜家”,如何让它只显示与宜家公司相关的商品? 我想避免硬编码的过滤器功能,因为我会在几个地方进行这种类型的多重过滤,而且我不想每次都制作单独的功能。

来自控制器的 JSON:

[
{"id": "1", "position": "Lagerarbetare", "startdate": "06-07-2014", "city": "Kungenskurva", "company": "IKEA"},
{"id": "2", "position": "Webbdesigner", "startdate": "16-06-2014", "city": "Skarpnäck", "company": "Snowpeak"},
{"id": "3", "position": "Kassör", "startdate": "06-07-2014", "city": "Birsta", "company": "IKEA"},
{"id": "4", "position": "Säljare", "startdate": "06-07-2014", "city": "Gunnebo", "company": "Gunnebo"},
{"id": "5", "position": "Säljare", "startdate": "06-07-2014", "city": "Kungenskurva", "company": "Elgiganten"}
]

查看代码:

<input type="text" ng-model="search_position" placeholder="Sök" />
<div class="uk-button uk-form-select" data-uk-form-select>
    <span></span>
    <i class="uk-icon-caret-down"></i>
    <select ng-model="search_company" ng-options="job.company for job in jobs | unique: 'company' | orderBy:'company'">
        <option value="">Välj företag</option>
    </select>
</div>

<table class="uk-table uk-table-striped uk-table-hover">
    <thead>
        <tr>
            <th>Position</th>
            <th>Företag</th>
            <th>Start datum</th>
            <th>Ort</th>

        </tr>
    </thead>
    <tr ng-repeat="job in jobs | filter: { $: search_position} | filter:{ company: search_company }">
        <td class="uk-width-2-5">
            {{job.position}}
        </td>
        <td class="uk-width-1-5">
            {{job.company}}
        </td>
        <td class="uk-width-1-5">
            {{job.startdate}}
        </td>
        <td class="uk-width-1-5">
            {{job.city}}
        </td>
    </tr>
</table>

【问题讨论】:

    标签: angularjs filtering


    【解决方案1】:

    很抱歉,我不能给你 9 小时的回报,但我希望我能帮助你解渴,得到一个可行的解决方案。 :)

    ng-options 必须稍作调整才能达到您的需要。所选选项的值必须与过滤条件匹配。

    ng-options="job.company as job.company for job in jobs | unique:'company' | orderBy:'company'"
    

    注意job.company as job.company for job in jobs的用法。

    还必须观察模型search_company,以便在选择默认选项后重置过滤器。

    $scope.$watch('search_company', function(val){
        // Watch to reset the filter
        $scope.search_company = $scope.search_company || undefined;
    });
    

    参考这个完整的DEMO 来见证同样的事情。还要阅读 ng-options docs 中 Arguments 表中的最后一行,以了解 asfor 在 ng-options 中的工作原理。

    【讨论】:

    • 谢谢!我知道我一定缺少一些简单的东西。这是我使用 Angular 的第一天,我必须说,尽管我打了 9 个小时......我很喜欢它...... :)
    • 这是一次战斗,而不是持续的战斗;)
    猜你喜欢
    • 1970-01-01
    • 2015-11-06
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多