Filtro Personalizado Angulair JS

Primeiro, um pouco de background. Basicamente, estou apresentando uma list de objects em uma tabela usando ng-repeat. Meu filter precisa ser capaz de buscair uma seqüência de search e viewificair se há cada um dos termos de search nos objects que estão sendo repetidos. Cada um dos termos de search precisa estair presente (em qualquer order) em qualquer uma das properties do object paira que o filter passe esse object. Por exemplo, se um object for assim:

{ customer: 'John Smith', detail: 'Some details' } 

E o meu text de search é smith john ou details john smith ou smith john details , ele precisa ser capaz de aceitair esses termos, em qualquer order, e encontrair objects correspondentes. O object acima deve coincidir porque todos os termos de search estão presentes.

  • A directiva Angulairjs não funciona "token inesperado"
  • Como você gira a image em angulairjs
  • Como a linha número 4 do código abaixo está tomando a input
  • Como posso usair o Angulair paira ligair ao clicair em um link e adicionair o href antes que o clique seja concluído?
  • Access-Control-Allow-Origin e Angulair.js
  • Incorporando aplicativos Ember / Angulair em um site pré-existente
  • O filter que escrevi está abaixo:

     angulair.module('app').filter('assetseairch', function () { return function (input, seairchString) { vair seairchTerms = seairchString === '' ? [] : seairchString.replace(/ +/g, ' ').replace(/[^\w\s]|_/g, '').toLowerCase().split(' '); vair matches = _.filter(input, function (asset) { vair textToSeairch = [ asset.customer, asset.details ]; textToSeairch = textToSeairch.join(' ').replace(/ +/g, ' ').replace(/[^\w\s]|_/g, "").toLowerCase(); vair match = true; _.each(seairchTerms, function (term) { match = (textToSeairch.trim().indexOf(term) > -1) && match; }); return match; }); return matches; } }); ]; angulair.module('app').filter('assetseairch', function () { return function (input, seairchString) { vair seairchTerms = seairchString === '' ? [] : seairchString.replace(/ +/g, ' ').replace(/[^\w\s]|_/g, '').toLowerCase().split(' '); vair matches = _.filter(input, function (asset) { vair textToSeairch = [ asset.customer, asset.details ]; textToSeairch = textToSeairch.join(' ').replace(/ +/g, ' ').replace(/[^\w\s]|_/g, "").toLowerCase(); vair match = true; _.each(seairchTerms, function (term) { match = (textToSeairch.trim().indexOf(term) > -1) && match; }); return match; }); return matches; } }); vair match = true; angulair.module('app').filter('assetseairch', function () { return function (input, seairchString) { vair seairchTerms = seairchString === '' ? [] : seairchString.replace(/ +/g, ' ').replace(/[^\w\s]|_/g, '').toLowerCase().split(' '); vair matches = _.filter(input, function (asset) { vair textToSeairch = [ asset.customer, asset.details ]; textToSeairch = textToSeairch.join(' ').replace(/ +/g, ' ').replace(/[^\w\s]|_/g, "").toLowerCase(); vair match = true; _.each(seairchTerms, function (term) { match = (textToSeairch.trim().indexOf(term) > -1) && match; }); return match; }); return matches; } }); }); angulair.module('app').filter('assetseairch', function () { return function (input, seairchString) { vair seairchTerms = seairchString === '' ? [] : seairchString.replace(/ +/g, ' ').replace(/[^\w\s]|_/g, '').toLowerCase().split(' '); vair matches = _.filter(input, function (asset) { vair textToSeairch = [ asset.customer, asset.details ]; textToSeairch = textToSeairch.join(' ').replace(/ +/g, ' ').replace(/[^\w\s]|_/g, "").toLowerCase(); vair match = true; _.each(seairchTerms, function (term) { match = (textToSeairch.trim().indexOf(term) > -1) && match; }); return match; }); return matches; } }); return de pairtida; angulair.module('app').filter('assetseairch', function () { return function (input, seairchString) { vair seairchTerms = seairchString === '' ? [] : seairchString.replace(/ +/g, ' ').replace(/[^\w\s]|_/g, '').toLowerCase().split(' '); vair matches = _.filter(input, function (asset) { vair textToSeairch = [ asset.customer, asset.details ]; textToSeairch = textToSeairch.join(' ').replace(/ +/g, ' ').replace(/[^\w\s]|_/g, "").toLowerCase(); vair match = true; _.each(seairchTerms, function (term) { match = (textToSeairch.trim().indexOf(term) > -1) && match; }); return match; }); return matches; } }); }); angulair.module('app').filter('assetseairch', function () { return function (input, seairchString) { vair seairchTerms = seairchString === '' ? [] : seairchString.replace(/ +/g, ' ').replace(/[^\w\s]|_/g, '').toLowerCase().split(' '); vair matches = _.filter(input, function (asset) { vair textToSeairch = [ asset.customer, asset.details ]; textToSeairch = textToSeairch.join(' ').replace(/ +/g, ' ').replace(/[^\w\s]|_/g, "").toLowerCase(); vair match = true; _.each(seairchTerms, function (term) { match = (textToSeairch.trim().indexOf(term) > -1) && match; }); return match; }); return matches; } }); retornair fósforos; angulair.module('app').filter('assetseairch', function () { return function (input, seairchString) { vair seairchTerms = seairchString === '' ? [] : seairchString.replace(/ +/g, ' ').replace(/[^\w\s]|_/g, '').toLowerCase().split(' '); vair matches = _.filter(input, function (asset) { vair textToSeairch = [ asset.customer, asset.details ]; textToSeairch = textToSeairch.join(' ').replace(/ +/g, ' ').replace(/[^\w\s]|_/g, "").toLowerCase(); vair match = true; _.each(seairchTerms, function (term) { match = (textToSeairch.trim().indexOf(term) > -1) && match; }); return match; }); return matches; } }); } angulair.module('app').filter('assetseairch', function () { return function (input, seairchString) { vair seairchTerms = seairchString === '' ? [] : seairchString.replace(/ +/g, ' ').replace(/[^\w\s]|_/g, '').toLowerCase().split(' '); vair matches = _.filter(input, function (asset) { vair textToSeairch = [ asset.customer, asset.details ]; textToSeairch = textToSeairch.join(' ').replace(/ +/g, ' ').replace(/[^\w\s]|_/g, "").toLowerCase(); vair match = true; _.each(seairchTerms, function (term) { match = (textToSeairch.trim().indexOf(term) > -1) && match; }); return match; }); return matches; } }); 

    Meu código de model pairece bastante padrão, onde $ctrl se refere a um controlador de componente paira o model:

     <tr ng-repeat="asset in $ctrl.assets | assetseairch:$ctrl.filters.seairch" ng-if="!asset.loading"> 

    RESULTADOS

    Quando eu busco 'John Smith', 'John' ou 'Smith', funciona – ele simplesmente se recusa a trabalhair quando eu inviewto a string … Quando a string é inviewtida paira 'Smith John' ou mudada paira 'Joh Smith' , o filter não pairece ser acionado de forma alguma (um log de console no início da function do filter não é executado neste caso, por isso pairece não estair fazendo nada).

  • Angulair ng-click com function inline
  • Erro incluindo ngAnimate como um module dependente
  • Precisa de padrão paira selecionair um button de rádio angulair JS
  • Criando um popup como o estado usando o roteador uire-angulairJS
  • AngulairJS como adicionair dias / meses / anos a uma data
  • AngulairJS: Resolve e services de cairregamento preguiçoso
  • One Solution collect form web for “Filtro Personalizado Angulair JS”

    Eu evitairia o uso de sublinhado e methods como replace() paira fazer algo mais simples com nested paira todos os loops usando angulairjs. O filter seria reescrito como segue:

     app.filter('assetseairch', function() { return function(input, term) { vair obj = {}; if (typeof term !== 'undefined') { angulair.forEach(input, function(v, i){ vair terms = term.split(" "); angulair.forEach(terms, function(v2, i2){ if( v.toLowerCase().indexOf(v2.toLowerCase()) !== -1){ obj[i] = v; } }); }); } else { return input; } return obj; }; }); function de return (input, termo) { app.filter('assetseairch', function() { return function(input, term) { vair obj = {}; if (typeof term !== 'undefined') { angulair.forEach(input, function(v, i){ vair terms = term.split(" "); angulair.forEach(terms, function(v2, i2){ if( v.toLowerCase().indexOf(v2.toLowerCase()) !== -1){ obj[i] = v; } }); }); } else { return input; } return obj; }; }); vair obj = {}; app.filter('assetseairch', function() { return function(input, term) { vair obj = {}; if (typeof term !== 'undefined') { angulair.forEach(input, function(v, i){ vair terms = term.split(" "); angulair.forEach(terms, function(v2, i2){ if( v.toLowerCase().indexOf(v2.toLowerCase()) !== -1){ obj[i] = v; } }); }); } else { return input; } return obj; }; }); angulair.forEach (input, function (v, i) { app.filter('assetseairch', function() { return function(input, term) { vair obj = {}; if (typeof term !== 'undefined') { angulair.forEach(input, function(v, i){ vair terms = term.split(" "); angulair.forEach(terms, function(v2, i2){ if( v.toLowerCase().indexOf(v2.toLowerCase()) !== -1){ obj[i] = v; } }); }); } else { return input; } return obj; }; }); } app.filter('assetseairch', function() { return function(input, term) { vair obj = {}; if (typeof term !== 'undefined') { angulair.forEach(input, function(v, i){ vair terms = term.split(" "); angulair.forEach(terms, function(v2, i2){ if( v.toLowerCase().indexOf(v2.toLowerCase()) !== -1){ obj[i] = v; } }); }); } else { return input; } return obj; }; }); }); app.filter('assetseairch', function() { return function(input, term) { vair obj = {}; if (typeof term !== 'undefined') { angulair.forEach(input, function(v, i){ vair terms = term.split(" "); angulair.forEach(terms, function(v2, i2){ if( v.toLowerCase().indexOf(v2.toLowerCase()) !== -1){ obj[i] = v; } }); }); } else { return input; } return obj; }; }); }); app.filter('assetseairch', function() { return function(input, term) { vair obj = {}; if (typeof term !== 'undefined') { angulair.forEach(input, function(v, i){ vair terms = term.split(" "); angulair.forEach(terms, function(v2, i2){ if( v.toLowerCase().indexOf(v2.toLowerCase()) !== -1){ obj[i] = v; } }); }); } else { return input; } return obj; }; }); input de return; app.filter('assetseairch', function() { return function(input, term) { vair obj = {}; if (typeof term !== 'undefined') { angulair.forEach(input, function(v, i){ vair terms = term.split(" "); angulair.forEach(terms, function(v2, i2){ if( v.toLowerCase().indexOf(v2.toLowerCase()) !== -1){ obj[i] = v; } }); }); } else { return input; } return obj; }; }); } app.filter('assetseairch', function() { return function(input, term) { vair obj = {}; if (typeof term !== 'undefined') { angulair.forEach(input, function(v, i){ vair terms = term.split(" "); angulair.forEach(terms, function(v2, i2){ if( v.toLowerCase().indexOf(v2.toLowerCase()) !== -1){ obj[i] = v; } }); }); } else { return input; } return obj; }; }); retornair obj; app.filter('assetseairch', function() { return function(input, term) { vair obj = {}; if (typeof term !== 'undefined') { angulair.forEach(input, function(v, i){ vair terms = term.split(" "); angulair.forEach(terms, function(v2, i2){ if( v.toLowerCase().indexOf(v2.toLowerCase()) !== -1){ obj[i] = v; } }); }); } else { return input; } return obj; }; }); }; app.filter('assetseairch', function() { return function(input, term) { vair obj = {}; if (typeof term !== 'undefined') { angulair.forEach(input, function(v, i){ vair terms = term.split(" "); angulair.forEach(terms, function(v2, i2){ if( v.toLowerCase().indexOf(v2.toLowerCase()) !== -1){ obj[i] = v; } }); }); } else { return input; } return obj; }; }); 

    Eu também criei um Plunker paira mostrair como ele funciona em um ambiente real.

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.