2015-10-13 2 views
0

У меня возникли некоторые проблемы в приложении Ember.js и некоторые sendAction, которые не работают. В принципе, у меня есть: - компонент ввода (тот, который запускает действие) - один контроллер/шаблон (содержащий рендеринг компонента) - еще один контроллер/шаблон, в котором мы визуализируем предыдущий контроллер.Ember.js: действия контроллера, не вызванные 'sendAction' от компонента

Вот код.

Во-первых, текстовое поле компонента:

Tm.JiraCloudInputComponent = Ember.TextField.extend({ 
    keyDown: function (event) { 
    if (event.keyCode === 27) { 
     this.sendAction('cancelJiraCloudUrl'); 
    } 

    if (event.keyCode === 13) { 
     event.preventDefault(); 
     this.sendAction('saveJiraCloudUrl'); 
    } 
    }, 

    blur: function() { 
    this.sendAction('saveJiraCloudUrl'); 
    } 
}) 

Контроллер, который имеет действия:

Tm.JiraCloudController = Ember.Controller.extend({ 
    jiraCloudEnabled: Ember.computed.oneWay('content.jiraCloudEnabled'), 
    jiraCloudUrl: Ember.computed.oneWay('content.jiraCloudUrl'), 
    successMessage: '', 
    errorMessage: '', 

    actions: { 
    saveJiraCloudUrl: function() { 
     if (Tm.isEmpty(this.get('jiraCloudUrl'))) { 
     this.unlinkJiraCloud(); 
     } else { 
     this.linkJiraCloud(); 
     } 
    }, 

    cancelJiraCloudUrl: function() { 
     this.set('jiraCloudUrl', this.get('model.jiraCloudUrl')); 
     this.set('jiraCloudEnabled', this.get('model.jiraCloudEnabled')); 
     this.clearMessages(); 
    } 
    } 
}); 

и связанный с ним шаблон:

{{#default-box id="jira-cloud-settings" class="box-full-width"}} 
    {{box-header title="settings.jira_cloud"}} 
    {{#box-content}} 
    {{jira-cloud-input class="form-control" value=jiraCloudUrl placeholder="Jira cloud url"}} 
    <button type="button" class="btn btn-default" title="Link Jira cloud" {{action "saveJiraCloudUrl"}}>Link Jira cloud</button> 
    {{/box-content}} 
{{/default-box}} 

Примечание: в коробках (по умолчанию -box, box-content) также являются компонентами.

И наконец, шаблон, в котором мы предоставляем предыдущий контроллер:

{{render "jiraCloud" content}} 

Я не могу найти что-либо понятно, почему он не работает. Никакие ошибки не вызваны вызовами «sendAction». Обратите внимание, что действие на кнопке работает как шарм.

Спасибо за вашу помощь, Винсент

+0

Примечания: Я пытался удалить компонент коробки просто в случае, никакого эффекта ... – Vincent

ответ

1

Ну, я просто глупо на самом деле. Я слишком привыкли к старому «отправить», так что я забыл сделать отображение при визуализации компоненты:

{{jira-cloud-input save="saveJiraCloudUrl" esc="cancelJiraCloudUrl" class="form-control" value=jiraCloudUrl placeholder="Jira cloud url"}} 

И в коде:

Tm.JiraCloudInputComponent = Ember.TextField.extend({ 
    keyDown: function (event) { 
    if (event.keyCode === 27) { 
     this.sendAction('esc'); 
    } 

    if (event.keyCode === 13) { 
     this.sendAction('save'); 
     event.preventDefault(); 
    } 
    }, 

    blur: function() { 
    this.sendAction('save'); 
    } 
}) 
Смежные вопросы