Textarea для чата на Ember.js

26.10.2014

Если вы делаете веб-приложение с чатом, то вам не обойтись без текстового поля для ввода сообщения. Хороший чат это тот чат, в котором сообщения отправляются при нажатии на Enter, а возврат каретки с помощью shift + enter. Стандартный компонент Ember.TextArea для этих целей вполне сгодиться, но только с небольшой модификацией:

App.MessageTextareaComponent = Ember.TextArea.extend({
    keyDown: function (event) {
        if (event.which === 13 && ! event.shiftKey) {
            // Don't insert newlines when submitting with enter
            event.preventDefault();
        }
    },

    // This next bit lets you add newlines with shift+enter without submitting
    insertNewline: function (event) {
        if (! event.shiftKey) {
            // Do not trigger the "submit on enter" action if the user presses
            // SHIFT+ENTER, because that should just insert a new line
            this._super(event);
        }
    }
});

Используем так

{{message-textarea value=newMessage action="sendMessage"}}
Подсмотрено на stackoverflow.