Tengo una variedad de productos que repito usando ng-repeat y estoy usando
<div ng-repeat="product in products | filter:by_colour">
para filtrar estos productos por color. El filtro funciona, pero si el nombre / descripción del producto, etc. contiene el color, el producto permanece después de aplicar el filtro.
¿Cómo configuro el filtro para que solo se aplique al campo de color de mi matriz en lugar de a todos los campos?
angularjs
ng-repeat
angularjs-filter
Tim Webster
fuente
fuente
Respuestas:
Vea el ejemplo en la página de filtro . Use un objeto y establezca el color en la propiedad de color:
fuente
filter:{ color: '...', size: '...', ...}
Especifique la propiedad (es decir
colour
) donde desea que se aplique el filtro:fuente
'!'+
, así<div ng-repeat="product in products | filter:{ colour: '!'+by_colour }">
<div ng-repeat="product in products | filter:{ resultsMap.annie: '!!' }">
o (algo equivalente) como esta:<div ng-repeat="product in products | filter:by">
y en el controlador:$scope.by = { 'resultsMap.annie': '!!' };
. Este segundo enfoque le brinda más control sobre la propiedad que se filtra. Nota:'!!'
significa "no nulo".customFilter
puede ser un objeto simple en tuscope
que actualizas cuando sea necesario. Mira este saqueador .Puede filtrar por un objeto con una propiedad que coincida con los objetos que tiene que filtrar:
Por supuesto, esto se puede pasar por variable, como sugirió Mark Rajcok.
fuente
Si desea filtrar en un nieto (o más profundo) del objeto dado, puede continuar construyendo su jerarquía de objetos. Por ejemplo, si desea filtrar en 'thing.properties.title', puede hacer lo siguiente:
También puede filtrar múltiples propiedades de un objeto simplemente agregándolas a su objeto de filtro:
fuente
La mejor manera de hacer esto es usar una función:
html
javascript
Alternativamente, puede usar ngHide o ngShow para mostrar y ocultar dinámicamente elementos según un determinado criterio.
fuente
Tenga cuidado con el filtro angular. Si desea seleccionar un valor específico en el campo, no puede usar filtro.
Ejemplo:
javascript
html
Esto seleccionará ambos, porque usar algo como
substr
Eso significa que desea seleccionar un producto donde "color" contiene cadena "azul" y no donde "color" es "azul".
fuente
<div ng-repeat="product in products | filter: { color: 'blue' }:true">
solo funcionará en coincidencias exactas (el "verdadero" al final es el argumento de comparación: enlaceBúsqueda por color:
También puedes hacer un nido interior.
fuente
Si hicieras lo siguiente:
... no solo obtendría elementos de itemTypeId 2 y itemStatus 1, sino que también obtendría elementos con itemType 20, 22, 202, 123 y itemStatus 10, 11, 101, 123. Esto se debe a que el filtro: {.. .} la sintaxis funciona como una cadena contiene consulta.
Sin embargo, si agregara la condición : verdadero , filtraría por coincidencia exacta:
fuente
mi camino es este
Mostrando así
fuente
Debe usar en
filter:{color_name:by_colour}
lugar deSi desea hacer coincidir con una sola propiedad de un objeto, escriba esa propiedad en lugar del objeto, de lo contrario, alguna otra propiedad obtendrá coincidencia.
fuente
Especifique la propiedad en filtro, del objeto en el que desea aplicar filtro:
Pero desea aplicar el filtro solo en el nombre
fuente
Si desea filtrar por un campo:
Si desea filtrar para todos los campos:
y https://docs.angularjs.org/api/ng/filter/filter bueno para ti
fuente