ember.js - ember - ¿Cómo desencadenar una acción cuando una entrada obtiene el foco?
ember onclick (2)
Resultó ser más simple de lo que pensaba ...
Solo tuve que escribir {{input class="form-control" placeholder="search..." value=s focus-in="focus"}}
en mi plantilla
Quiero saber cómo activar una acción cuando se enfoca una entrada.
ahora estoy usando esto en mi plantilla: {{view "clickinput" class="form-control" placeholder="search..." value=s action="focus"}}
y esto como la vista:
export default Ember.TextField.extend({
onEvent: ''focusIn'',
focusIn: function() {
this.sendAction(''focusIn'', this, event);
}
});
y esto en mi controlador:
actions: {
focus: function() {
alert(''f'');
}
}
pero no funciona ..
Uncaught Error: Assertion Failed: The focusIn action was triggered on the component <appkit@view:clickinput::ember438>, but the action name (function superWrapper() { var ret, sup = this.__nextSuper; this.__nextSuper = superFunc; ret = func.apply(this, arguments); this.__nextSuper = sup; return ret; }) was not a string.
este error en chrome: Uncaught Error: Assertion Failed: The focusIn action was triggered on the component <appkit@view:clickinput::ember438>, but the action name (function superWrapper() { var ret, sup = this.__nextSuper; this.__nextSuper = superFunc; ret = func.apply(this, arguments); this.__nextSuper = sup; return ret; }) was not a string.
: Uncaught Error: Assertion Failed: The focusIn action was triggered on the component <appkit@view:clickinput::ember438>, but the action name (function superWrapper() { var ret, sup = this.__nextSuper; this.__nextSuper = superFunc; ret = func.apply(this, arguments); this.__nextSuper = sup; return ret; }) was not a string.
¿por qué?
Utilicé tu respuesta como punto de partida, ¡gracias! Esto es lo que funcionó para mí:
Estadísticas de Ember:
DEBUG: -------------------------------
DEBUG: Ember : 1.7.1
DEBUG: Ember Data : 1.0.0-beta.11
DEBUG: Handlebars : 1.3.0
DEBUG: jQuery : 2.1.3
DEBUG: Model Fragments : 0.2.7
DEBUG: -------------------------------
Mis funciones genéricas, llamo functions.js
Ember.TextField.reopen({
attributeBindings: [''data-stripe''],
focusIn: function() {
return this.sendAction(''focus-in'');
}
});
Mi controlador
actions: {
focusField: function() {
debugger;
}
}
Plantilla My Handlebars
{{input focus-in="focusField" type="tel" maxlength="20" data-stripe="number" placeholder="Card Number" value=input.number autocomplete="cc-number"}}