2013-10-13 3 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 срабатывает отлично, но по какой-то причине он не переходит к контроллеру.

Я попытался добавить filterAbilities к действию хэша на App.AbilitiesController и App.IndexRoute согласно this. Согласно this, представление должно быть частью контроллера возможностей, поскольку это контекст его родителя, но он не работает.

Я провел некоторое тестирование, и почти похоже, что this.get('controller') не выводит контроллер вообще. Я немного потерял, что вызывает проблему. Этот код работал несколько RCs назад, но как только я обновился до 1.0, он сломался.

Что я пытаюсь сделать здесь, это фильтр списка способностей. Если это еще не так, пожалуйста, дайте мне знать! Любая помощь будет оценена по достоинству. Благодаря!!

ответ

2

Ember.TextField и Ember.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

Смежные вопросы