2013-11-23 105 views
1

我有一個控制器在餘燼像這樣:呼叫控制器方法Ember.js

App.TasksController = Ember.ArrayController.extend({ 
    search: function(term){ ... } 
}) 

我有相對視圖,與自定義文本字段,因爲這樣的:

App.TasksView = Ember.View.extend({ 
    searchField: Ember.TextField.extend({ 
     keyUp: function(){ this.get('controller').search() } 
    }) 
}) 

然而,我得到一個錯誤,說沒有這樣的方法。

我想知道:

  1. 我該如何正確調用從視圖控制器中定義的方法?
  2. 如何調試哪個是當前活動的控制器?如果我console.log(this.get('controller'))我得到一個對象,但是導航和確切地理解哪個控制器是非常混亂的。

回答

1

此文本字段的範圍與tasksview的範圍不同,因此它無權訪問控制器。

老實說,處理這個問題的一個更好的方法是將textfield值綁定到某個東西上並添加一個觀察者。當它改變火了一個搜索(或者可能是更好的將抖這麼的每一個字符他們輸入你是不是發射了請求)

http://emberjs.jsbin.com/IRAXinoP/3/edit

+0

謝謝你,這讓我走得更遠。第二個問題的答案是什麼?我如何正確調試發生了什麼? Console.logging返回的對象非常混亂,我怎麼消除它們之間的歧義? –

+0

Ember檢查器工作得很好,另外查看構造函數通常有助於弄清楚你正在查看什麼類型的對象,原型也有幫助。 – Kingpin2k

+0

我最終實現了我想要的,但問題是:在這種情況下,有什麼方法可以訪問控制器嗎?我可以通過上下文,或類似的東西? –