gpt4 book ai didi

AngularJS:如何防止/延迟应用过滤器以避免 ng-repeat 的重新排列

转载 作者:行者123 更新时间:2023-12-02 21:00:58 25 4
gpt4 key购买 nike

我已经为简单的 sider 输入编写了一个指令。

fiddle 在这里:http://plnkr.co/edit/PQXyxfmTbpaQE1ZnkQkq

当您更改某人的年龄以更改顺序时,就会出现问题。有没有办法劫持 ng-repeat 元素的父范围以不应用过滤器?

具体来说,我可以在拖动 slider 时阻止元素重新排列吗?例如,我会在 mousedown 事件上设置一些标志,这将停止过滤,并在 mouseup 事件上删除该标志以允许重新排列。

我已经查看了 Angular 源代码,并且非常确定目前无法完成此操作,但我也欢迎对 Angular 进行修改以实现此目的。

最佳答案

创建您自己的自定义过滤器,并在 View 中使用它来代替 orderBy。 (但是,您的自定义过滤器可以注入(inject) orderByFilter 并使用它 - 有关详细信息,请参阅 this SO answer。)

<li ng-repeat="person in persons | myOrderBy:orderProp:doNotFilter">

在自定义过滤器中,检查参数 doNotFilter,它是一个范围属性,当您按下鼠标时指令将设置该属性,并在您松开鼠标时清除该属性。如果设置了该属性,则不进行过滤。

您必须将“不过滤”属性的名称传递给您的指令:

<slider min="0" max="100" step="1" ng-model="person.age" do-not-filter="doNotFilter">

另一种方法是为指令指定一个或两个 Controller 方法来调用 mousedown 和 mouseup。这些方法将影响 doNotFilter 范围属性。

<slider min="0" max="100" step="1" ng-model="person.age" 
filter-stuff="filterStuff(filterState)">

关于AngularJS:如何防止/延迟应用过滤器以避免 ng-repeat 的重新排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16147898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com