2013-10-13 212 views
2

我有這樣一個觀點:訪問控制器渲染

App.AbilityFilter = Ember.TextField.extend({ 
    classNames: ['span3'], 
    keyUp: function(evt) { 
     this.get('controller').send('filterAbilities','text'); 
    }, 
    placeholder:'Search abilities' 
}); 

它的渲染這樣的部分:

<script type="text/x-handlebars" data-template-name="abilities"> 
    {{view App.AbilityFilter}} 
    <div class="accordion" id="abilities"> 
      {{#each ability in model}} 
       <div class="accordion-group">  
        {{ability.name}} 
       </div> 
      {{/each}} 
     </div> 
</script> 

正在被渲染在我的應用程序是這樣的:

{{render 'abilities'}} 

我遇到的問題是與事件或相反,行動。 keyUp事件觸發得很好,但由於某種原因,它不會去控制器。

我試着在App.AbilitiesControllerApp.IndexRoute根據this加入filterAbilities的動作散列。根據this,該視圖應該是能力控制器的一部分,因爲這是它的父項的上下文,但它不起作用。

我已經做了一些測試,看起來好像this.get('controller')根本沒有取得控制器。我對有什麼導致問題感到有點失落。此代碼在以前的幾個RC上工作過,但是一旦我升級到1.0,它就打破了。

我想在這裏做的是篩選能力列表。如果這不是這種方式,請讓我知道!任何幫助,將不勝感激。謝謝!!

回答

2

Ember.TextFieldEmber.TextArea不再是簡單的意見,但中Ember.Component這意味着this.get('controller')不會再參考意見控制器,而子類。

但是有一個不同的變量,它確實對周圍的控制器有參考,這是this.get('targetObject')。因此,你應該把你的動作到targetObject

App.AbilityFilter = Ember.TextField.extend({ 
    classNames: ['span3'], 
    keyUp: function(evt) { 
    this.get('targetObject').send('filterAbilities','text'); 
    }, 
    placeholder:'Search abilities' 
}); 

希望它能幫助。

+0

謝謝喲!我只是擴展了Embers.View的視圖! – NicholasJohn16