当前位置: 首页 > 面试题库 >

Angular js:从控制器访问以ng-repeat(ngRepeat)过滤的数据

鲁霄
2023-03-14
问题内容

我需要从控制器访问已在模板(ng-repeat内)中过滤的数据。

这就是我的意思:

我的模板中有此表:

 <table class="table">
        <thead>
            <th>Name</th>
            <th>Gender</th>
        </thead>
        <tbody>
            <tr ng-repeat="person in persons | filter:query">
                <td>{{person.name}}</td>
                <td>{{person.gender}}</td>
            </tr>
        </tbody>
</table>

然后我有一个<select>用于按性别过滤数据的

<h1>Cluster:</h1>
    <select ng-model="query.gender" >
        <option value ="">ALL</option>
        <option value ="male">Male</option>
        <option value ="female">Female</option>
    </select>

这样可以。

如果有人选择其中一个选项,我需要对过滤后的结果进行处理。这就是为什么我的控制器中有一个$ watch来查找过滤器查询的更改的原因:

$scope.$watch('query.gender', function(newValue, oldValue) {
            // Here is where I need to get filtered results
});

我的问题是:

如何从控制器访问FILTERED内容?

我最好这样,而不必在控制器中执行其他“过滤”操作…(由于数据已经被过滤,结果位于内存中的某个地方,对吗?)


问题答案:

我不确定,但是您可以在控制器中使用过滤器功能。因此,尝试类似:

$scope.$watch('query.gender', function(newValue, oldValue) {
        var x = $filter('filter')($scope.persons, $scope.query);
});
x应该包含与我认为的表中相同的过滤数据。在这里查看文档: http
:
//docs.angularjs.org/api/ng.filter
filter了解更多信息。


 类似资料:
  • 问题内容: 我正在尝试为包含的模板动态分配控制器,如下所示: 但是Angular抱怨这是不确定的。 我猜,是不是定义 尚未 (因为我可以附和了在模板中)。 我见过很多关于人们设置等于变量的示例,例如:。但是,如果不创建重复的并发循环,就无法弄清楚在需要时如何获得可用值。 PS我也尝试在模板中进行设置(认为​​到那时它一定已经解决了),但是没有骰子。 问题答案: 您的问题是ng-controller

  • 问题内容: 我是AngularJS的新手,我正在构建一个小型的概念验证租车清单应用程序,该应用程序会提取一些JSON,并通过ng- repeat并使用几个过滤器来呈现这些数据的各个部分: 现在,我想在控制器中创建一个自定义过滤器,该过滤器可以迭代ng-repeat中的项目,并仅返回满足特定条件的项目-例如,我可以根据哪个“ provider”复选框创建值数组进行检查,然后评估每个ng-repeat

  • 问题内容: 我正在尝试使用生成一个可编辑列表。我想提醒用户在继续操作之前更新所有编辑内容,因此我正在使用中动态创建“嵌套”表单,因为文档说我可以在这些动态创建的输入上使用验证。 尽管这似乎可以在HTML中运行,但我看不到如何在控制器中访问那些动态创建的表单和相关的验证字段。具体来说,当用户更改输入时,我使用$ dirty属性形式调出一个按钮来告诉用户提交更改。到目前为止,一切都很好。但是,一旦提交

  • 问题内容: 我有上面的控制器,它设置了一个我只能从内部访问值的控制器。 但我看到的地方,使用下面我将能够访问,但是当我在它不存在。 我无法弄清楚如何访问$ scope并使用变量更新它。 问题答案: 没有看到标记,我想MenuSideController的作用域是您选择的作用域的子作用域。 虽然可以像这样遍历树(假设我们想要的作用域是第一个孩子): 仅选择连接了特定控制器的元素会更简单。 假设您正在

  • 问题内容: 我通过这种方式将值传递给自定义过滤器: 我也想在其中注入几个范围变量,就像我在指令中可以做的那样。不必将这些var作为函数参数显式传递就可以做到这一点吗? 问题答案: 显然可以。 通常,您会将范围变量作为函数参数传递给过滤器: 但是,要传递当前范围,您必须传递: 并将引用当前范围: 简化: 警告: 请注意这一点,并仅使用范围读取过滤器中的值,否则您将很容易在$ digest循环中发现自

  • 问题内容: 我想使用父列表(foos)的索引作为子列表(foos.bars)中函数调用的参数。 我发现了有人建议使用$ parent。$ index的帖子,但不是的属性。 如何访问父级的索引? 问题答案: 我的示例代码是正确的,问题出在我的实际代码中。不过,我知道很难找到这样的例子,所以我在回答别人的情况。