es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

WeChat Miniprogram envía objeto de ts a archivo wxs.

Estoy creando un miniprograma de WeChat utilizando TypeScript, tengo una clase de tipo “Person” con los siguientes datos:

export class Person {
   dob: Date;
   firstName: String;
   lastName: String;
}

Crear objeto Person:

let person = new Person ();
person.dob = new Date ();
person.fisrtName = "XXX";
person.lastName = "YYY";

Establecer datos:

this.setData ({
person: person
})

Al mostrarlo en el archivo wxml, estoy haciendo lo siguiente:

<view> {{person.firstName}} </view>
<view> {{person.lastName}} </view>
<view> {{person.dob}} </view>

La propiedad dob muestra esto como [object Object].

He creado un método en un archivo wxs para transformar la propiedad dob y mostrarla como una cadena, llamando al método toDateString del objeto Date, pero me da el siguiente error:
dob.toDateString() no es una función. Si llamo a este método desde el archivo .ts, funciona perfectamente, pero cuando lo llamo desde el archivo wxs, da un error.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Solución:

    El problema que estás enfrentando se debe a que el archivo wxs no puede acceder a las funciones de los módulos importados. Para solucionar esto, puedes crear una función de filtro personalizada en tu código TypeScript, que se puede utilizar en tu plantilla wxml.

    Por ejemplo, puedes crear una función formatDate en tu código TypeScript de esta manera:

    export function formatDate(date: Date): string {
      return date.toDateString();
    }
    

    Luego, importa esta función en tu archivo .wxml usando la etiqueta <wxs> de la siguiente manera:

    <wxs src="./utils.ts" module="utils"></wxs>
    
    <view>{{utils.formatDate(person.dob)}}</view>
    

    De esta manera, puedes utilizar la función formatDate en tu plantilla wxml para mostrar la propiedad dob como una cadena.

Comments are closed.