2014-04-16 22 views
7

我想知道如何當輸入被集中觸發一個動作..
現在我使用這個對我的模板:{{view "clickinput" class="form-control" placeholder="search..." value=s action="focus"}}
並將此作爲的觀點:如何在輸入獲得焦點時觸發動作?

export default Ember.TextField.extend({ 
    onEvent: 'focusIn', 
    focusIn: function() { 
    this.sendAction('focusIn', this, event); 
    } 
}); 

,這對我的控制器:

actions: { 
    focus: function() { 
    alert('f'); 
    } 
} 

,但它不工作..
我得到的鉻此錯誤:Uncaught Error: Assertion Failed: The focusIn action was triggered on the component <[email protected]: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.

爲什麼?

回答

15

它竟然是simplier比我以爲,
我只是在我的模板

-1

我用你的答案爲出發點,這樣的感謝寫{{input class="form-control" placeholder="search..." value=s focus-in="focus"}}!下面是我工作:

灰燼統計:

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: ------------------------------- 

我的通用功能,我稱之爲functions.js

Ember.TextField.reopen({ 
    attributeBindings: ['data-stripe'], 
    focusIn: function() { 
    return this.sendAction('focus-in'); 
    } 
}); 

我控制器

actions: { 
    focusField: function() { 
     debugger; 
    } 
    } 

我把手模板

{{input focus-in="focusField" type="tel" maxlength="20" data-stripe="number" placeholder="Card Number" value=input.number autocomplete="cc-number"}}