【问题标题】:AngularJs get filtered input from ng-repeat to a Javascript variable?AngularJs 从 ng-repeat 过滤输入到 Javascript 变量?
【发布时间】:2017-03-23 09:46:43
【问题描述】:

我目前正在使用 AngularJs,并且正在使用多个选择框过滤输入数组。在过滤后的结果中,我正在运行一个 ng-repeat 来显示我现在过滤的数组中的每个元素。现在我的问题。我想将过滤后的输入数组保存为 javascript 变量,以便稍后显示或打印整个结果。实际上,我只想将过滤后的输入数组保存到 javascript 变量中,或者甚至更好,每个 ng-repeat 的结果完全保存在变量中,但在应用新过滤器或再次过滤器后更新自身。我被困在这里。有没有一种流畅的方法可以做到这一点。或者你有更好的想法在这里什么会起作用?已经谢谢了 假设我们有一个语言和名称过滤器:

<select class="form-control"
              ng-options="l.language for l in languages"
              ng-model="languageModel"
              ></select>
<select class="form-control"
              ng-options="n.name for n in names"
              ng-model="nameModel"
              ></select>


<ul ng-repeat="sq in input| filter:languageModel| filter:nameModel>

<li>Language: {{sq['Language']}}</li>
<li>Name: {{sq['Name']}}</li>
</ul>

现在我想要类似的东西:

$scope.var = ... // 过滤后的结果。

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    您可以直接将数组存储在您的ng-repeat

    <ul ng-repeat="sq in (filteredInput = (input| filter:languageModel| filter:nameModel))>
    

    现在可以访问$scope.filteredInput获取过滤后的数组

    【讨论】:

    • 非常感谢,这正是我所寻找的。如此简单。我现在很开心。
    【解决方案2】:

    您可以直接从javascript调用过滤器:

    $scope.filteredInput = $filter('languageModel')($scope.input);
    

    languageModel 是您的过滤器的名称。 确保在你的控制器中注入$filter

    顺便说一句,ng-repeat 出现在 &lt;ul&gt; 元素上很奇怪。更合适的做法是将其放在&lt;li&gt;

    <ul>
        <li ng-repeat="sq in input| filter:languageModel| filter:nameModel>
            <span>Language: {{sq['Language']}}</span>
            <span>Name: {{sq['Name']}}</span>
        <li>
    </ul>
    

    【讨论】:

    • 很好,谢谢你,我想我可以用它。我会记住,我当然希望我的代码是合适的;)
    【解决方案3】:

    您可以在后面的代码中编写自己的过滤器函数,像这样

    $scope.filterlanguage=function(item){
    
    //add your condition if satisfies return or null
    if(condition)
    {
    return item;
    }
    return null;
    
    
    }
    

    【讨论】:

    • 谢谢。我认为这可能是一个适合我的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 2018-01-28
    相关资源
    最近更新 更多