Фильтр Angular js не работает на некоторых мобильных устройствах

я пытаюсь отфильтровать массив angular js, используя пользовательские фильтры в контроллере,

фильтры корректно работали на некоторых мобильных устройствах, но не работали на некоторых.

Пожалуйста, смотрите мой код ниже

var app = angular.module('myApp', []);

function filter(input, filterarr) {
    return input.filter(function(e1){
        return filterarr.find(function(e2) {
            return e1.sender === e2.sender && e1.receiver === e2.receiver;
        });
    });
}

app.controller('myCtrl', function($scope) {

    var messages = [
        {sender:'fred', receiver:'josh', msg:'HI'},
        {sender:'josh', receiver:'fred', msg:'i DEY'},
        {sender:'josh', receiver:'racheal', msg:'hw re u2?'},
        {sender:'barack', receiver:'angela', msg:'Dear'},
        {sender:'fred', receiver:'josh', msg:'Hello'},
        {sender:'angela', receiver:'barack', msg:'Moin'},
        {sender:'josh', receiver:'racheal', msg:'hw re u?'}
    ];
    var name1 = 'fred';
    var name2 = 'josh';
    var myFilter = [{sender: name1, receiver: name2},{sender: name2, receiver: name1}];

    $scope.messages = filter(messages, myFilter);
});

и мой html

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">

<div ng-repeat="msg in messages">

    Sender : {{ msg.sender }} MSg : {{ msg.msg }} Receiver : {{ msg.receiver       }}
</div>
</div>

person iTech    schedule 02.05.2016    source источник
comment
Sender : {{ msg.sender }} MSg : {{ msg.msg }} Reciever : {{ msg.reciever }}, приемник вместо приемника.   -  person pgrodrigues    schedule 02.05.2016
comment
вы должны указать, на каком устройстве (и в каком браузере) он работает, а на каком нет, с указанием версии, если это возможно.   -  person Walfrat    schedule 02.05.2016
comment
Не знаю, если это действительно проблема, но меня это как-то беспокоит: вы назвали свою функцию и второй параметр вашей функции filter. Я думаю, другое имя, по крайней мере, улучшит читаемость;)   -  person Fidel90    schedule 02.05.2016
comment
я только что понял, что .find() - это моя проблема, есть ли альтернатива этой функции?   -  person iTech    schedule 02.05.2016


Ответы (1)


Проблема заключалась в функции .find(), она не поддерживалась в некоторых браузерах и ОС, поэтому здесь мне пришлось использовать функцию polyfill.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find#Polyfill

person iTech    schedule 02.05.2016