Магистраль: Удалить не будет связывать? - PullRequest
2 голосов
/ 06 января 2012

Я пытаюсь связать одно из моих базовых представлений так, чтобы при удалении модели она также удалялась из другого представления.

Кажется довольно простым, но я не могу получитьметод уничтожения для привязки к представлению.Я могу привязать к изменениям или новым моделям, но удаление просто не срабатывает.Я помню, как смутно читал что-то об эксцентричности с привязкой к удалению, но не могу вспомнить, что это было или, что более важно, как обойти это.

Любые идеи приветствуются.Короче говоря, если бы кто-нибудь мог предложить пример привязки вызова удаления к соответствующему коду ниже:

Просмотр исходного кода

class BackboneDemo.Views.Tasks.ShowView

  # ...
  events:
    "click #mark_task_completed" : "markAsCompleted"
    "click #delete_task" : "destroy"


  destroy: () ->
    $('#contentArea').html('')
    $('#contentWrapper').css('display', 'none')
    @model.destroy()
    this.remove()
    return false

Редактировать: Все еще нет радости.Я добавил больше кода ниже, чтобы точно определить, где проблема

Модель

class MyModel extends Backbone.Model
  # ...

  destroy: () ->
    console.log 'this is getting hit'
    super

Вид цели

class TargetView extends Backbone.View
  # ...
  initialize:() ->
    _.bindAll(@, 'destroy', 'testmethod', 'render')
    @model.bind('destroy', @testmethod)

  testmethod: () ->
    console.log 'but this is not getting hit'

Ответы [ 2 ]

2 голосов
/ 06 января 2012

решаемая. В случае, если кто-то еще сталкивается с этой проблемой, проблема заключается в геме backbone-rails и в том, как работает функция destroy (). Существует ожидающий запрос на удаление, который решает проблему, но вкратце:

  • Убедитесь, что коллекция передана в представление
  • Замените код уничтожения по умолчанию следующим образом:

    уничтожить: () -> getViewAndCollection = ((view) -> return -> {collection: @ options.collection, view: @}) (@)

    @model.destroy () успех: (модель, ответ) -> vars = getViewAndCollection () vars.collection.remove модель vars.view.remove () ошибка: (модель, ответ) -> # Все, что вы хотите для ошибки функциональности

Вы можете увидеть больше в ожидающем запросе на вытягивание здесь

0 голосов
/ 06 января 2012

Что по этому поводу:

MyView = Backbone.View.extend({
    initialize: function(){
        this.model.bind('destroy', this.remove(), this)
    }

})
...