У меня есть приложение backbone.js с вложенной моделью (каждый почтовый ящик Think с сообщениями)
Я воспользовался советом из другого вопроса о переполнении стека, в котором я установил «родителя» для каждого объекта коллекции сообщений так,что я мог бы вернуться к этим родительским объектам.
При добавлении дочернего объекта я могу использовать эту стратегию для сброса свойства родительского объекта, чтобы обновить представление родительского объекта - что я хочу, так какпоказывает совокупное количество своих детей.Например, этот coffeescript:
@collection.create(@model.toJSON(),
success: (message) =>
@model = message
@collection.parent.set({"message_count": @collection.length})
window.location.hash = ""
error: (message, jqXHR) =>
@model.set({errors: $.parseJSON(jqXHR.responseText)})
)
При удалении дочернего объекта, однако, я пытаюсь установить это же свойство для родительского объекта таким же образом, только изменение модели данных не вызывает обновления в родительском представлении.,Я не могу понять, почему!Я могу посмотреть в отладчике и увидеть, что мое свойство правильно обновлено на родительском, но родительское представление не обновлено.
Вот один из способов, которым я пытаюсь:
destroy: () ->
collection = @model.collection
parent = @model.collection.parent
@model.destroy()
this.remove()
collection.remove(@model)
parent.set({"message_count": collection.length})
return false
Это устанавливаетзначение родительского объекта, но представление не обновится.
Я также могу попробовать это следующим образом - где я пытаюсь дождаться успешного завершения с сервера, чтобы сообщить мне, что я могу обновить свое представление:
destroy: () ->
collection = @model.collection
@model.destroy(
success:(resp) ->
alert ("in success")
collection.remove(@model)
collection.parent.set({"message_count": collection.length})
error:(resp) ->
alert ("in error" + resp)
)
this.remove()
return false
Проблема, которую я здесь вижу, заключается в том, что, хотя сервер правильно удаляет дочерний объект и отправляет ответ 200 клиенту, выполняется только код ошибки!и что бы я здесь ни делал, я в одной лодке - родительский вид не обновится.
Кто-нибудь может объяснить, почему?
Заранее спасибо ...