Estoy tratando de usar un enlace único de dos formas ligeramente diferentes en un elemento personalizado sin modelo de vista.
campo-entrada.html:
<template bindable="label,type,property">
<div class="form-group">
<label for="${property}">${label}</label>
<input id="${property}" value.bind="${property}" type="${type}">
</div>
</template>
my-form.html:
<form ...>
<field-input label="Email address" type="text" property="email"></field-input>
los deseado el resultado es:
<form ...>
<div class="form-group">
<label for="email">Email address</label>
<input id="email" value.bind="email" type="text">
</div>
los real El resultado es un error en la consola:
ERROR [app-router] TypeError: sourceExpression.connect is not a function(…)
¿Qué estoy haciendo mal?
Respuestas
7 para la respuesta № 1Tienes que usar bind
En lugar de imprimir la variable dentro de las comillas:
<template bindable="label,type,property,myValue">
<div class="form-group">
<label for.bind="property">${label}</label>
<input id.bind="property" placeholder.bind="property" value.bind="myValue" type.bind="type">
</div>
</template>
Cada vez que desee enlazar un atributo html, simplemente llame attr.bind="object"
, sin las marcas de interpolación ${}
Actualización de la solución de @Seth
Ya que tiene un elemento de entrada dentro del elemento personalizado, es importante usar myValue.two-way="..."
en la vista de composición. Ver Enlace de datos bidireccional en elementos personalizados de Aurelia: enlace del elemento personalizado al modelo de vista principal