2015-04-22 37 views
1

我有我的自定義視圖:灰燼自定義視圖例外:沒有動作的處理程序:searchEvent

export default Ember.ContainerView.extend({ 
 
    classNames: ['search-terms'], 
 
    eventTypeValue: null, 
 
    userSidValue: null, 
 

 
    init: function() { 
 
    this._super(); 
 

 
    this.eventTypeValue = Ember.TextField.create(); 
 
    this.userSidValue = Ember.TextField.create(); 
 

 
    this.eventTypeValue.set("placeholder", "search by event type"); 
 
    this.eventTypeValue.addObserver("value", this.userSidValue, this.change); 
 

 
    this.userSidValue.set("placeholder", "earch by user sid"); 
 
    this.userSidValue.addObserver("value", this.userSidValue, this.change); 
 

 
    this.pushObject(this.eventTypeValue); 
 
    this.pushObject(this.userSidValue); 
 
    }, 
 

 
    change: function() { 
 
    this.get("controller").send("searchEvent"); 
 
    } 
 
});

和控制器:

export default Em.Controller.extend({ 
 

 
    actions: { 
 
\t searchEvent : function() { 
 
\t \t console.log("controller searchEvent"); 
 
\t } 
 
    } 
 
    
 
});

當我改變某些領域的文本,然後我有以下異常:

Uncaught Error: had no action handler for: searchEvent

但是這方面的工作,當我鍵入一些文字,然後點擊我的自定義視圖的地方。

+0

嘗試se ** a ** rch而不是serch – Franky

回答

1

您的問題是addObserver的第二個參數 - 這是執行第三個參數(this.change)的上下文。

即使您指定this.change它不使用this - 它使用Ember.TextField作爲this不是ContainerView

您需要更改以下兩行:

this.eventTypeValue.addObserver("value", this.userSidValue, this.change); 
this.userSidValue.addObserver("value", this.userSidValue, this.change); 

到:

this.eventTypeValue.addObserver("value", this, this.change); 
this.userSidValue.addObserver("value", this, this.change); 

This is a working JSBin example

我通常被視爲方法(第三個參數)傳遞的字符串 - 這也適用。我會傳遞字符串而不是實際的函數本身。

this.eventTypeValue.addObserver("value", this, 'change'); 
this.userSidValue.addObserver("value", this, 'change'); 
+0

非常感謝:)正常工作 –