¿Puedo comparar dos matriz usando una propiedad computarizada en Vue JS? -- vue.js campo con vuejs2 campo con computed-properties camp Relacionados El problema

Can i compare two array using computed property in Vue js?


0
vote

problema

Español

Lo siento mucho si no explicé esto claramente. Quiero crear una edición de amenidad como Airbnb. Tengo la matriz de "Servicios" con ID, nombre. Luego cargué todas las comodidades para House_ID = 2 a una matriz llamada "House_Amenities". Lo que quiero es cuando un récord en House_Amenities con amenies_id coincide con ID de "Servicios", una casilla de verificación será marcada. Lo que quiero alcanzar: [1]: https://postimg.cc/bghvggsp

Intenté usar la propiedad computar, pero aún no he tenido suerte. Siempre devolvió "[VUE WARN]: error en Render:" TypeError: No se puede leer la propiedad 'Longitud' de undefined "

  <table class= "table table-striped" style="overflow-y: scroll">     <thead>         <tr>         <th>ID</th>         <th>Amenities</th>         <th>             <span class="checkbox-custom checkbox-primary" style="padding:0px;margin:0px">             <input class="selectable-item" type="checkbox">             <label></label>             </span>         </th>         </tr>     </thead>     <tbody v-for = "(amenity,index) in amenitiesLst">         <tr v-for="(items,index) in houseAmenitiesLst>             <td>{{index+1}}</td>             <td>{{amenity.name}}</td>             <td>                 <input class="selectable-item" type="checkbox" value="check[index]"  >             </td>           </tr>     </tbody> </table>   

y aquí está el código de VUE:

  public void delete(int data) {     root = delete(root, data); }  private Node delete(Node node, int data) {     if(node == null)    throw new IllegalStateException("Empty BST. Cannot delete.");      if(data < node.data) {         delete(node.left, data);     }     else if(data > node.data) {         delete(node.right, data);     }     else {         if(node.left == null)             return node.right;         else if(node.right == null)             return node.left;         else {             // getting data from the rightmost node in the left subtree             // because its greater than all the elements the left subtree of the deleted node             // and smaller than all the elements in the right subtree of the deleted node             node.data = retrieveData(node.left);             // delete the rightmost node in the left subtree             node.left = delete(node.left, node.data);         }     }     return node; }  private int retrieveData(Node node) {     while(node.right != null)         node = node.right;     return node.data; } 0  
Original en ingles

I am so sorry if I didn't explain this clearly. I want to create an edit amenity like Airbnb. I have the "Amenity" array with id, name. Then I loaded all the amenities for house_id = 2 to an array called "house_amenities". What I want is when a record in house_amenities with amenites_id match with id from "Amenities" a checkbox will be ticked. What i want to achieved: [1]:https://postimg.cc/bGhvGGSP

I tried using the computed property but haven't had any luck yet. It always returned "[Vue warn]: Error in render: "TypeError: Cannot read property 'length' of undefined"

<table class= "table table-striped" style="overflow-y: scroll">     <thead>         <tr>         <th>ID</th>         <th>Amenities</th>         <th>             <span class="checkbox-custom checkbox-primary" style="padding:0px;margin:0px">             <input class="selectable-item" type="checkbox">             <label></label>             </span>         </th>         </tr>     </thead>     <tbody v-for = "(amenity,index) in amenitiesLst">         <tr v-for="(items,index) in houseAmenitiesLst>             <td>{{index+1}}</td>             <td>{{amenity.name}}</td>             <td>                 <input class="selectable-item" type="checkbox" value="check[index]"  >             </td>           </tr>     </tbody> </table> 

And here is vue code:

computed: {     checked: function(){         this.amenitiesLst.map(function(item){             for(var i = 0; i < this.houseAmenitiesLst.length; i++)             {                 if(item.id == this.houseAmenitiesLst[i].amenities_id)                     return true;                 else                      return false;                 }         })     } }, 
        
   
   

Lista de respuestas

0
 
vote

Su problema es que la propiedad SET @b = SELECT foo FROM someothertable WHERE somecondition; INSERT INTO tablename(a, b) VALUES ( (1, @b), (2, @b), ... 414 se ejecuta antes de tener algún valor en su función en su función, simplemente agregue un cheque para que solo se ejecute cuando se inicie así:

  SET @b = SELECT foo FROM someothertable WHERE somecondition; INSERT INTO tablename(a, b) VALUES (   (1, @b),   (2, @b),   ... 6  

La propiedad computarizada se ejecuta cada vez que se inicia una dependencia, por lo tanto, tan pronto como se inicialice SET @b = SELECT foo FROM someothertable WHERE somecondition; INSERT INTO tablename(a, b) VALUES ( (1, @b), (2, @b), ... 7 devolverá su valor. También puede necesitar colocar un V-si en su plantilla para asegurarse de que no tiene un error de render.

 

Your issue is that the computed property is executed before you have any values in your amenitiesList in your function just add a check to only execute when is initiated like this:

checked: function(){ if(this.amenitiesLst){         this.amenitiesLst.map(function(item){             for(var i = 0; i < this.houseAmenitiesLst.length; i++)             {                 if(item.id == this.houseAmenitiesLst[i].amenities_id)                     return true;                 else                      return false;                 }         })     } return     } 

The computed property is executed each time a dependency changes therefore as soon as amentiesList is initialized it will return your value. You may also need to put a v-if on your template to make sure you don't have a render error.

 
 
     
     
0
 
vote

Creo que el problema es con el contexto, SET @b = SELECT foo FROM someothertable WHERE somecondition; INSERT INTO tablename(a, b) VALUES ( (1, @b), (2, @b), ... 8 Dentro del SET @b = SELECT foo FROM someothertable WHERE somecondition; INSERT INTO tablename(a, b) VALUES ( (1, @b), (2, @b), ... 919 no se refiere a la instancia de VUE, por lo que 99887776620 no es definido

Intenta con:

  insert1  
 

I think the problem is with the context, this inside the map function doesn't refer to the Vue instance so houseAmenitiesLst is not defined

Try with:

computed: {     checked: function(){         this.amenitiesLst.map((item) => {             for(var i = 0; i < this.houseAmenitiesLst.length; i++)             {                 if(item.id == this.houseAmenitiesLst[i].amenities_id)                     return true;                 else                      return false;                 }         })     } }, 
 
 
       
       

Relacionados problema

0  Embergjs Ordenar Hasmany Association como una propiedad computada  ( Emberjs sort hasmany association as a computed property ) 
Tengo dos modelos, carpetas y archivos. Una carpeta tiene muchos archivos. Si digo folder.get('files') obtengo todos los archivos asociados con esa carpeta ...

0  La propiedad computada no se patea, Vue JS  ( Computed property doesnt kick in vue js ) 
Soy usong vue.js y he creado una propiedad computarizada que se almacena dentro de mi VUEX. Por alguna razón, cuando creo mi vigilante y agrego el artículo a ...

0  Polímero 1.0 comodín se une contra una subproperabilidad anidada en una matriz  ( Polymer 1 0 wildcard bind against a nested subproperty in an array ) 
Di que tengo un objeto de datos así: tickers = [] for code in range(0,len(li)): tickers.append(li[code].columns[0][:3]) ['ABC', 'DEF', etc.] test...

0  Propiedad calculada no funciona  ( Computed property not working ) 
Estoy escribiendo la aplicación TODO y no puedo obtener propiedades computadas a trabajar. Quiero implementar propiedades calculadas en el Controlador TODOS /...

0  Userdefaults Valor initalal para UserDidSetup en Swift  ( Userdefaults inital value for userdidsetup in swift ) 
La navegación rootviewcontroller depende de la configuración del usuario debido a que he intentado verificar si el usuario realizó todos los formularios a bor...

2  Ember.js - no se puede filtrar ni filtrar según las propiedades computadas  ( Ember js cannot filterby or filter based on computed properties ) 
Estoy tratando de filtrar el resultado de mi HADMANY-ARRAY ASYNC-GET CON FILTERBY y CONDICIONES "ISROOT" == VERDADERO. La propiedad "isroot" es una propiedad ...

3  Getter de la propiedad calculada llamada dos veces  ( Getter of computed property called twice ) 
Tengo el siguiente código: class A { var value = 1 } struct B { private var _a: A var a: A { get { print("getter") ...

0  ¿Cómo evitar el error 404 para una propiedad computarizada que se basa en una variable obtenida de la llamada API?  ( How to avoid 404 error for a computed property which relies on a variable obtain ) 
Quiero mostrar una imagen cuya fuente es una propiedad computarizada que se basa en una llamada de API. Funciona, pero obtengo un mensaje de error 404 en la c...

2  Usando propiedades computadas dentro de Métodos en VUEJS  ( Using computed properties inside methods in vuejs ) 
Estoy tratando de crear una función de shuffle en vue.js. Por lo tanto, para esto creé una propiedad computarizada y luego llamo a un método. Pero no funciona...

15  VUE.JS PROPIEDAD COMPUTADA NO TRABAJANDO  ( Vue js computed property not working ) 
Tengo un objeto de datos de usuarios que tiene un nombre apellido y apellidos y una propiedad computada que devuelve el nombre completo, pero la siguiente doe...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos