【问题标题】:Angular filter using ng-repeat使用 ng-repeat 的角度过滤器
【发布时间】:2014-10-20 06:14:25
【问题描述】:

如果你看看 plunkr http://plnkr.co/edit/ilNYwiTwJIwe5HwteErz?p=preview

<select ng-model="query.type">
<li ng-repeat="tech in techs | filter : query">

我有一个疑问——在 ng-model 和过滤器表达式中,“查询”的东西(由于缺乏更好的理解)如何获取类型字段。 “查询”到底是什么。我们能安慰它吗?以及query.typequery的关联是如何形成的。

我确实完全遵循了代码语义声明的逻辑推理-

<div ng-repeat="tech in techs | filter: { type : 'mvc' }">

这很好地击中了头部。对此有任何仔细的解释吗?谢谢。

【问题讨论】:

    标签: angularjs angularjs-ng-repeat angular-filters


    【解决方案1】:

    首先,您需要了解typeString

    如果您想查看query 是什么 - 您可以将ng-change 添加到您的select,如下所示:

    <select ng-model="query.type" ng-change="consoleQuery()">
    

    在控制器中:

     $scope.consoleQuery = function () {
       console.log($scope.query);
     }
    

    现在从select 中选择一些值后,您将在控制台中看到queryObjectObject {type: "mvp"}

    所以当你像这样在ng-repeat query 中使用时:

    <li ng-repeat="tech in techs | filter : query">
    

    如果您输入下一个则表示相同(另请参阅Demo):

    <li ng-repeat="tech in techs | filter : {type : query.type}">
    

    在最后的代码中,您将创建一个Object,它具有type 属性,其值为query.type。但就query 是一个Object 而言,它只包含一个属性type - 我们可以在ng-repeat 中使用它。

    演示:http://plnkr.co/edit/8poVKiFWuOjiNFO485Xy?p=preview

    希望,这将为您解释发生了什么。

    【讨论】:

    • 谢谢,我现在可以看到,当我有 query.type 和纯字符串时,'query' 变成了一个对象。
    【解决方案2】:

    如果你像这样打印过滤器表达式:

    <select ng-model="query.type"> {{query}}
    

    你会看到query只是一个普通的javascript对象:

    {type: 'mvc'}
    

    所以当你使用像ng-repeat="tech in techs | filter : query 这样的过滤器时,你基本上提供了一个变量,它是一个具有过滤属性的对象。

    【讨论】:

    • 也就是说,query是一个附加在作用域上的变量,通过select上的ng-modal进行修改。
    • 是的,这只是一些范围变量。
    • dsfq - 我无法打印您提到的表达式,请您分享代码或 plunkr。此外,我的问题更针对 query(在 ng-repeat 中)和 query.type(在 ng-model 中)之间的关系。也在查询和技术之间。最重要的是如何?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2015-05-26
    • 1970-01-01
    • 2017-02-16
    • 2017-02-21
    相关资源
    最近更新 更多