Nali.Notice
Это заранее созданная модель предназначеная для уведомления пользователя информационными сообщениями. По умолчанию настроены три типа уведомлений - info
, warning
и error
, соответственно модель имеет три вида NoticeInfo
, NoticeWarning
и NoticeError
, шаблоны которых генерируются при создании приложения и располагаются в директории app/client/templates/notice
, а их стили в app/client/stylesheets/notice
. Различия их заключаются в визуальном оформлении, которое Вы легко можете настроить "под себя".
Модель и её виды ничем не отличаются от обычных
Nali.Model.extend Notice:
initialize: ->
@::::expand Notice: @
# расширяем объект Nali свойством Notice ссылающимся на эту модель
prepare: ( params ) ->
params = message: params if typeof params is 'string'
params
# если переданный параметр строка, модифицируем её до объекта
# вида {message: 'Hello World'}, если объект - оставляем как есть
addMethods: ->
for name of @views
do ( name ) =>
@[ name ] = ( params ) => @new( @prepare params ).show name
# добавляем одноименные методы для показа видов
Nali.View.extend
# создаем три вида для модели Notice
NoticeInfo:
onShow: -> @hide 3000
# после показа скрываем вид с задержкой 3 сек.
NoticeWarning:
onShow: -> @hide 3000
NoticeError:
onShow: -> @hide 3000
Чтобы показать пользователю информационное сообщение, в любом месте клиентской части приложения при наступления необходимых условий можно вызвать необходимый метод:
@Notice.info 'Hello World'
# покажет уведомление типа info, по умолчанию
# уведомление скроется через 3 секунды
# данный вызов равноценен вызову
@Notice.info message: 'Hello World'
При этом создается экземпляр модели Notice
со свойством message
равным 'Hello World'
, у которого вызывается метод showInfo()
без аргументов, т.е. представление вида вставляется в контейнер приложения. Аналогичная ситуация обстоит с видами warning
и error
.
Если помимо свойства message
, Вы решили отображать еще и заголовок title
, то Вам необходимо отредактировать шаблон уведомления, например так:
<b>{ @title }</b>
<i>{ @message }</i>
и вызывать метод info
следующим образом:
@Notice.info title: 'Information', message: 'Hello World'
Если Вам необходимо изменить контейнер куда вставляются уведомления, а также cделать так, чтобы пользователь сам закрывал уведомления, нужно отключить автоскрытие и добавить кнопку закрыть в шаблон, для этого создадим файл app/client/javascripts/views/notice/info.js.coffee
, в котором переопределим настройки по умолчанию:
Nali.View.NoticeInfo.expand
insertTo: -> '.noticesContainer'
# определим контейнер для вставки
onShow: ->
# переопределим дефолтный метод, этим мы отключим
# автоскрытие, вызываемое в нем по умолчанию
добавим в шаблон app/client/templates/notice/info.html
ссылку "закрыть"
<p>{ @message }</p>
<a href="@hide">Закрыть</a>
Если вам необходимо создание еще одного типа уведомлений, просто добавьте и настройте его вид, например
$ nali view NoticeNewMessages
создаст файлы
-
app/client/javascripts/views/notice/new_messages.js.coffee
- сам вид -
app/client/stylesheets/notice/new_messages.css.sass
- его стили -
app/client/templates/notice/new_messages.html
- шаблон
настраиваем вид
Nali.View.extend NoticeNewMessages:
onShow: -> @hide 5000
# скрываем уведомление через 5 секунд
редактируем шаблон
<p>У вас новые сообщения { @count }</p>
настраиваем стили, затем где необходимо показываем уведомление
@Notice.newMessages count: 5
С серверной части можно отправлять информационные сообщения следующим образом
client.info message: 'Hello World'
# на клиенте произойдет вызов
@Notice.info message: 'Hello World'
# аналогично вызываются warning и error
client.warning message: 'Warning'
client.error message: 'Error'
Вызвать любое нестандартное уведомление можно так
client.notice :newMessages, count: 5
# на клиенте произойдет вызов
@Notice.newMessages count: 5
- Начало работы
- Структура приложения
- Основные компоненты
- Клиентская часть
- Серверная часть