Так что это может быть немного связано. Полное приложение, если вы сильно зацикливаетесь и хотите запустить его для себя, это on github.Сервис не обновляется постоянно
(Если вы это сделаете, вам необходимо войти в систему, имя пользователя и пароль в API/tasks/populate.rake
... только не говори никому, к?)
Я использую Ember State Services следить из isClean
Состояние компонента редактора (используется hallo.js).
Вот некоторые примеры кода, со сценарием, и проблема у меня с ним:
Когда содержание в редакторе изменен, hallo.js выстреливает hallomodified
событие. В didInsertElement
крюке компонента, я прилагаю слушатель JQuery событий, который устанавливает isClean
свойства ложно, и регистрирует его в консоль, чтобы мы могли проверить это на самом деле работает:
JfEdit = Ember.Component.extend
editorService: Ember.inject.service('jf-edit')
editorState: Ember.computed('page', ->
@editorService.stateFor(@page) # page is passed in to the component
# in the route template
).readOnly()
# ...
didInsertElement: ->
self = @
@$().on("hallomodified", ->
console.log "modified"
self.get('editorState.isClean') = false
console.dir self.get('editorState') # -> Logs: Class -> __ember123456789:null,
# isClean: false
# in the console (but I have to click on
# isClean to show the value)
).hallo(
# ...
)
`export default JfEdit`
# Full code is at https://github.com/clov3rly/JoyFarm/blob/master/app/app/components/jf-edit.em
# (written in emberscript, which is an adaptation of coffeescript)
Это похоже на работу , editorState.isClean = false
в консоли.
Итак, когда мы пытаемся перейти от страницы, мы проверяем состояние редактора, чтобы предложить пользователю сохранить.
NewPostRoute = Ember.Route.extend
model: ->
@*.store.createRecord 'post',
title: "New Post"
content: "Content here."
editorService: Ember.inject.service('jf-edit')
editorState: Ember.computed('model', ->
@editorService.stateFor(@model)
).readOnly().volatile()
actions:
willTransition: (transition) ->
model = @modelFor('posts/new')
console.log "editorState:", @get('editorState.isClean')
# -> logs true, after the log in
# the file above logged false.
console.dir @get('editorState') # -> Logs: Class ->
# __ember123456789:null
# (the same number as above)
# but the isClean property is
# not in the log statement
# ...
unless @get('editorState.isClean')
confirm("Do you want to discard your changes?") || transition.abort()
# Full code at https://github.com/clov3rly/JoyFarm/blob/master/app/app/routes/posts/new.em
Так что теперь editorState.isClean возвращает false (и не отображается при регистрации самого объекта). Однако первое свойство объекта имеет тот же ключ, который я предполагаю, является некорректным идентификатором?
Шаблон выглядит следующим образом:
{{{jf-edit page=model save="save" class="blog editor"}}}
Так, page
в файле component/jf-edit
должен быть тот же объект, model
в файле routes/new
.
Файлы службы/состояния довольно просты, если вы хотите их увидеть, вы можете найти их в this gist (или в самом репо).