javascript - 无法插入将 $scope 变量传递到 Angular 过滤器时出现的错误

标签 javascript angularjs ionic-framework interpolation angularjs-filter

我有一个 Angular 过滤器,它通过检查 id 是否存在于数组中来将用户 id 转换为用户图像 url,并返回相应的图像 url,该数组与过滤器一起传递。

过滤器正在工作,ng-repeat 列表显示了正确的图像 url,但我的控制台中有 2 个错误。 第一个错误位于第 4 行,第二个错误位于 ionic.bundle.js:13380:32

错误:

Error: undefined is not an object (evaluating 'members.length')
Error: [$interpolate:interr] Can't interpolate: {{ participant.athlete_id | idToImage : clubMembers }} TypeError: undefined is not an object (evaluating 'members.length')


HTML:

<div ng-repeat="participant in participants | filter:{ event_id: event.id }: true track by $index">
    <img ng-src="{{ participant.athlete_id | idToImage : clubMembers }}">
</div>

Angular 过滤器:

1 app.filter('idToImage', function () {
2   return function (id, members) {
3       var curMember = id;
4        var len = members.length - 1;
5        while(len >= 0){
6           if(curMember >= members[len].id){
7               return members[len].profile;
8           }
9           len--;
10        }
11     };
12 });

clubMemers 在 {{ attendee.athlete_id | idToImage :clubMembers }} 是一个数组,如下例所示,是从外部源检索的:

$scope. clubMembers = [
   {"id":1234,"profile":"https://domain.net/pictures/1.jpg"},
   {"id":12345,"profile":"https://domain.net/pictures/3.jpg"},
   {"id":12346,"profile":"https://domain.net/pictures/4.jpg"}
]

最佳答案

我认为当 members 为空时,您的过滤器不会处理该条件,因为当您不处理它时,members.length 将被搞乱并且代码执行将在此时停止。

过滤

app.filter('idToImage', function () {
   return function (id, members) {
       if(!members) return; //return nothing in this case
       var curMember = id;
        var len = members.length - 1; //checking above if before processing members
        while(len >= 0){
           if(curMember >= members[len].id){
               return members[len].profile;
           }
           len--;
        }
    }
});

关于javascript - 无法插入将 $scope 变量传递到 Angular 过滤器时出现的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36082133/

相关文章:

javascript - 使用 AJAX 的 HTML/Javascript 搜索功能

javascript - 更改 View /组件但不更改 url

javascript - 类型错误 : Cannot read property 'open' of undefined (Phonegap and Ionic)

cordova - Ionic_CordovaError : Could not find an installed version of Gradle either in Android Studio, 或在您的系统上安装 gradle 包装器

css - Ionic 3 如何在自定义 ionic 输入中垂直居中文本?

javascript - 如何在react.js中单击按钮时读取按钮中的值字段

javascript - 为什么从 node.js 应用程序调用 iostat 会给我旧信息?

angularjs - Angular JS 注入(inject)新的类实例

css - 分页列布局

javascript - 过滤器将 bool 值更改为字符串 - angularjs