Quote from luishp on August 23, 2020, 6:16 pmVisualNEO Web can use any AngularJS directive. Probably the most useful is ng-repeat.
It allows to display JSON data collections in a very easy way. Plase take a look at the attached sample.
VisualNEO Web can use any AngularJS directive. Probably the most useful is ng-repeat.
It allows to display JSON data collections in a very easy way. Plase take a look at the attached sample.
Quote from Gaev on August 24, 2020, 12:11 am@luishp
This is a real hidden gem.
I believe you had informed us about it on this forum months ago; but I had forgotten. I wonder if this could be made easier by ...
- by defining the object to be repeated (template), as a separate Container/Dialog (with html or other inner objects)
- and somehow (perhaps via a neoCommand) linking the outer Container, the inner/template Container, and the array of json objectsThis kind of extended facility would make it very easy/efficient to show lists of composite objects (popularly deployed in smartphone Apps in Portrait Mode).
This is a real hidden gem.
I believe you had informed us about it on this forum months ago; but I had forgotten. I wonder if this could be made easier by ...
- by defining the object to be repeated (template), as a separate Container/Dialog (with html or other inner objects)
- and somehow (perhaps via a neoCommand) linking the outer Container, the inner/template Container, and the array of json objects
This kind of extended facility would make it very easy/efficient to show lists of composite objects (popularly deployed in smartphone Apps in Portrait Mode).
Quote from Palamar on August 26, 2020, 3:01 pmHola Luis;
Excelente ejemplo. Se podría realizar sin crear el array en el momento, sino traerlo desde afuera?. Estoy experimentando con Json traído desde Wordpress y si bien funciona bastante aceptable y los datos se acceden perfectamente, este hecho de insertar un elemento dentro de un objeto container a través de un Loop que contenga por ejemplo: "Nombre del post y autor" se hace excesivamente lento.
Gracias por los descubrimientos!
Hola Luis;
Excelente ejemplo. Se podría realizar sin crear el array en el momento, sino traerlo desde afuera?. Estoy experimentando con Json traído desde Wordpress y si bien funciona bastante aceptable y los datos se acceden perfectamente, este hecho de insertar un elemento dentro de un objeto container a través de un Loop que contenga por ejemplo: "Nombre del post y autor" se hace excesivamente lento.
Gracias por los descubrimientos!
Quote from luishp on August 26, 2020, 5:37 pmSi @palamar ¡claro! Esa es la idea: puedes traer el Array JSON desde una base de datos o desde Google Sheets o desde una consulta a una API de cualquier servicio externo.
Si @palamar ¡claro! Esa es la idea: puedes traer el Array JSON desde una base de datos o desde Google Sheets o desde una consulta a una API de cualquier servicio externo.
Quote from IoSoft on April 23, 2023, 6:28 am@luishp interesante, podría facilitarnos un archivo .neoapp de ejemplo, para un caso desde una gsheet...?
@luishp interesante, podría facilitarnos un archivo .neoapp de ejemplo, para un caso desde una gsheet...?
Quote from luishp on April 23, 2023, 8:26 am@iosoft te he respondido aquí:
https://visualneo.com/forum/topic/consulta-sobre-ng-repeat#postid-18936Saludos
@iosoft te he respondido aquí:
https://visualneo.com/forum/topic/consulta-sobre-ng-repeat#postid-18936
Saludos
Quote from IoSoft on April 1, 2024, 4:33 amBuenas noches, espero estén bien. Retornando a estos temas referidos a ng-repeat, mi consulta es la siguiente:
Tengo el siguiente div, muy similar al que colocaron de ejemplo:
<span ng-repeat="object in biblos | filter:searchText | orderBy: 'TEMAS'">
<div id=""> <font size="3">[object.TEMAS]</font><br>
</span>(mediante éste, yo muestro en mi app un listado con los registros de una base de datos, exclusivamente del campo "TEMAS" ordenados alfabéticamente)
Ahora bien, lo que necesito saber es: ¿se puede especificar que me muestre todos los registros, EXCEPTO los repetidos o duplicados...? ¿Hay algún filtro del ng-repeat para ello...?
Gracias. Saludos cordiales
Buenas noches, espero estén bien. Retornando a estos temas referidos a ng-repeat, mi consulta es la siguiente:
Tengo el siguiente div, muy similar al que colocaron de ejemplo:
<span ng-repeat="object in biblos | filter:searchText | orderBy: 'TEMAS'">
<div id=""> <font size="3">[object.TEMAS]</font><br>
</span>
(mediante éste, yo muestro en mi app un listado con los registros de una base de datos, exclusivamente del campo "TEMAS" ordenados alfabéticamente)
Ahora bien, lo que necesito saber es: ¿se puede especificar que me muestre todos los registros, EXCEPTO los repetidos o duplicados...? ¿Hay algún filtro del ng-repeat para ello...?
Gracias. Saludos cordiales
Quote from luishp on April 1, 2024, 9:59 amSí, puedes filtrar los elementos repetidos en un ng-repeat utilizando el filtro
unique
. Sin embargo, el filtrounique
no está incluido de forma nativa en AngularJS, por lo que necesitarás implementarlo. No lo he probado, pero esto debería funcionar.
En Project > Properties > Advanced > Custom Metadata > Body incluye este código:<script> // Define the filter 'unique' angular.module('NeoApp').filter('unique', function() { return function(collection, keyname) { var output = [], keys = []; angular.forEach(collection, function(item) { var key = item[keyname]; if (keys.indexOf(key) === -1) { keys.push(key); output.push(item); } }); return output; }; }); </script>Después modifica tu HTML para utilizar
unique
:<span ng-repeat="object in biblos | filter:searchText | orderBy: 'TEMAS' | unique: 'TEMAS'"> <div id=""> <font size="3">[object.TEMAS]</font><br> </span>Fíjate también que desde hace tiempo VisualNEO Web incluye ng-repeat en el panel de Properties > Advanced, con lo que puedes utilizarlo con objetos Container directamente.
No dejes de comentar si finalmente funcionó.
Saludos.
Sí, puedes filtrar los elementos repetidos en un ng-repeat utilizando el filtro unique
. Sin embargo, el filtro unique
no está incluido de forma nativa en AngularJS, por lo que necesitarás implementarlo. No lo he probado, pero esto debería funcionar.
En Project > Properties > Advanced > Custom Metadata > Body incluye este código:
<script> // Define the filter 'unique' angular.module('NeoApp').filter('unique', function() { return function(collection, keyname) { var output = [], keys = []; angular.forEach(collection, function(item) { var key = item[keyname]; if (keys.indexOf(key) === -1) { keys.push(key); output.push(item); } }); return output; }; }); </script>
Después modifica tu HTML para utilizar unique
:
<span ng-repeat="object in biblos | filter:searchText | orderBy: 'TEMAS' | unique: 'TEMAS'"> <div id=""> <font size="3">[object.TEMAS]</font><br> </span>
Fíjate también que desde hace tiempo VisualNEO Web incluye ng-repeat en el panel de Properties > Advanced, con lo que puedes utilizarlo con objetos Container directamente.
No dejes de comentar si finalmente funcionó.
Saludos.
Quote from IoSoft on April 1, 2024, 9:22 pmMuchísimas gracias @luishp!!!
De hecho, con tus indicaciones anteriores, pude lograr incorporar los elementos del ng-repeat sin duplicados en una lista de opciones, con el siguiente código:
<span ng-repeat="object in biblos | filter:searchText2 | orderBy: 'TEMAS' | unique: 'TEMAS'">
<option>[object.TEMAS]</option>
</span>ADJUNTO IMAGEN.
Ahora otra consulta, ¿se podría agregar una opción o botón para copiar (al portapapeles) el texto de algún elemento presentado por el ng-repeat? sé que se puede seleccionar y usar las teclas Ctrl + C; pero se puede agregar código al código expuesto más arriba, para hacerlo sin usar teclado...?
Muchísimas gracias @luishp!!!
De hecho, con tus indicaciones anteriores, pude lograr incorporar los elementos del ng-repeat sin duplicados en una lista de opciones, con el siguiente código:
<span ng-repeat="object in biblos | filter:searchText2 | orderBy: 'TEMAS' | unique: 'TEMAS'">
<option>[object.TEMAS]</option>
</span>
ADJUNTO IMAGEN.
Ahora otra consulta, ¿se podría agregar una opción o botón para copiar (al portapapeles) el texto de algún elemento presentado por el ng-repeat? sé que se puede seleccionar y usar las teclas Ctrl + C; pero se puede agregar código al código expuesto más arriba, para hacerlo sin usar teclado...?
Uploaded files: