javascript - 将键/值对传递给 Angular 过滤器

标签 javascript html angularjs

我有以下模板代码:

<div ng-repeat="entry in entries"
     ng-bind-html="ctrl.entry_statuses[entry] | createEntryURL">
</div>

哪里ctrl.entry_statuses是 Controller 中的一个对象,可能如下所示:

{a: 1, b: 2, c: 3}

现在,createEntryUrl过滤器看起来像这样:

angular.module('test').filter('createEntryURL', function() {
    return function(entry){
        switch(entry){
            case 1:
                return '<span class="one">' + entry + '</span>'
            case 2:
                return '<span class="two">' + entry + '</span>'
            case 3:
                return '<span class="three">' + entry + '</span>'
        }
    }
});

果然,通过了 entry变量仅包含键/值对的值部分。有没有办法同时传递键和值,以便我可以将键用作 <span> 中的字符串以及 switch 中匹配的值声明?

生成的 HTML 应如下所示:

<span class="one">a</span>
<span class="two">b</span>
<span class="three">c</span>

最佳答案

为了将额外的参数传递给自定义过滤器,您可以使用如下内容:

<div ng-repeat="entry in entries"
     ng-bind-html="ctrl.entry_statuses[entry] | createEntryURL: entry">
</div>

这将是您的 filter 函数中的第二个参数。像这样:

angular.module('test').filter('createEntryURL', function() {
    return function(entryStatus, entry){ 
        switch(entryStatus){
            case 1:
                return '<span class="one">' + entry + '</span>'
            case 2:
                return '<span class="two">' + entry + '</span>'
            case 3:
                return '<span class="three">' + entry + '</span>'
        }
    }
});

这应该会产生你所期望的结果:

<span class="one">a</span>
<span class="two">b</span>
<span class="three">c</span>

关于javascript - 将键/值对传递给 Angular 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42908192/

相关文章:

javascript - 为什么父元素上的 preventDefault() 单击 'disable' 复选框?

php - document.getElementById ('form_name' ).submit() 无法正常工作

java - 等同于服务器端 Scala/Java 中的 Angular $sanitize

javascript - 有什么方法可以增加 dygraph 中图形和范围选择器之间的差距吗?

javascript - 用户界面选择 : Search box not shown to search when data is an empty array

javascript - 如何用参数做 $state.go() ?

javascript - 如何在 JavaScript 中格式化/整理/美化

javascript - 寻找数字的最佳子集组合以达到给定的总和或最接近它

html - Div 的宽度被忽略

jquery - 通过 Jquery 重置本地日期时间