在 ng-repeat 中有条件地应用 angualrjs 自定义过滤器
conditionally apply angualrjs custom filter in ng-repeat
我想使用 ng-repeat 根据模板中的输入调用自定义过滤器。
因此,如果 myCondition 为真,那么我只想应用我的自定义过滤器切片,否则我不想应用切片过滤器。
<div ng-repeat = "job in userjobs.matched_jobs | slice:'5' && myCondition">
<div ng-include="'applydiv.html'"></div>
</div>
以上代码不起作用,因为切片过滤器在输入 (5&&myCondition) 中变为真
我可以在这里破解
<div ng-if="!myCondition">
<div ng-repeat = "job in userjobs.matched_jobs">
<div ng-include="'applydiv.html'"></div>
</div>
</div>
<div ng-else>
<div ng-repeat = "job in userjobs.matched_jobs | slice:'5'">
<div ng-include="'applydiv.html'"></div>
</div>
</div>
但是那样的话就不会遵循DRY原则了!
我在 提到了问题
但是我不能在模板中使用语法 filter:myCustomFilter 所以我需要一些其他的解决方法。
需要帮助。
如果您可以完全控制过滤器代码,则始终可以使用一个参数来有效地禁用过滤器。为了不影响其他人,把它作为最后一个可选参数:
app.filter("slice", function(){
return function(input, number, disable){
if (disable) return input;
// the rest of your filter
}
})
<div ng-repeat="item in items | slice:'5':!myCondition">
或者,如果您想遵循 ,您可以在第一个(也是唯一一个)参数为 undefined
:[=16 时禁用过滤器=]
app.filter("slice", function(){
return function(input, number){
if (!angular.isDefined(number)) return input;
// the rest of your filter
}
})
<div ng-repeat="item in items | slice: (!myCondition || undefined) && '5'">
我想使用 ng-repeat 根据模板中的输入调用自定义过滤器。 因此,如果 myCondition 为真,那么我只想应用我的自定义过滤器切片,否则我不想应用切片过滤器。
<div ng-repeat = "job in userjobs.matched_jobs | slice:'5' && myCondition">
<div ng-include="'applydiv.html'"></div>
</div>
以上代码不起作用,因为切片过滤器在输入 (5&&myCondition) 中变为真
我可以在这里破解
<div ng-if="!myCondition">
<div ng-repeat = "job in userjobs.matched_jobs">
<div ng-include="'applydiv.html'"></div>
</div>
</div>
<div ng-else>
<div ng-repeat = "job in userjobs.matched_jobs | slice:'5'">
<div ng-include="'applydiv.html'"></div>
</div>
</div>
但是那样的话就不会遵循DRY原则了!
我在
需要帮助。
如果您可以完全控制过滤器代码,则始终可以使用一个参数来有效地禁用过滤器。为了不影响其他人,把它作为最后一个可选参数:
app.filter("slice", function(){
return function(input, number, disable){
if (disable) return input;
// the rest of your filter
}
})
<div ng-repeat="item in items | slice:'5':!myCondition">
或者,如果您想遵循 undefined
:[=16 时禁用过滤器=]
app.filter("slice", function(){
return function(input, number){
if (!angular.isDefined(number)) return input;
// the rest of your filter
}
})
<div ng-repeat="item in items | slice: (!myCondition || undefined) && '5'">