Existe uma regra de ouro para decidir quando usar gatilho ou triggerMethod na Espinha dorsal.Marionete?

StackOverflow https://stackoverflow.com//questions/21052020

Pergunta

Eu estou jogando um pouco com Backbone.js e Backbone.Marionette e eu gostaria de saber qual a diferença entre trigger e triggerMethod.

Em particular, existe alguma regra de ouro para decidir quando usar o primeiro ou o último?

Em minha mente eventos, por exemplo, são úteis para a comunicação entre um elemento do DOM e seu ponto de vista.

triggerMethod é usado em Marionete para atualização em cascata diferentes componentes, por exemplo,um layout chama a show método para seus filhos (as crianças respondem à onShow).Então, para mim é o mesmo que chamar um método direto sobre ele.Isso é verdade?

O que sobre trigger?

Obrigado antecipadamente.

Foi útil?

Solução

Não há uma diferença enorme, e ele simplesmente depende do que você quer fazer...

Obviamente, se você quiser apenas para acionar um evento, você pode usar trigger.Mas usando trigger você também criar um "home made" triggerMethod implementação: trigger o evento, então, um ouvinte que vai chamar a função que você deseja.

Então, o que sobre triggerMethod ?Como mencionado acima, ele irá disparar um evento e chamar um método.Então, se o seu único objetivo é chamar o método, em primeiro lugar, não há necessariamente uma necessidade para o uso de triggerMethod.

Então, por que seria um uso triggerMethod em tudo?Porque dá a você "ganchos" para adicionar a funcionalidade de ouvintes de evento.No meu livro sobre Marionete, por exemplo, há uma triggerMethod chamada em https://github.com/davidsulc/marionette-gentle-introduction/blob/master/assets/js/apps/contacts/edit/edit_controller.js#L24 para exibir mensagens de erro em um formulário.O mesmo poderia ser alcançado ao simplesmente chamar

view.onFormDataInvalid(contact.validationError);

Mas, como mencionado acima, triggerMethod dê-nos um "gancho" para uso posterior.Por exemplo, vamos supor que eu queira adicionar o log de erros do usuário:Eu posso simplesmente adicionar um ouvinte para o meu ponto de vista:

initialize: function(){
  this.on("form:data:invalid", function(validationError){
    // log error here
  }
}

Esta adição de funcionalidade pode ser adicionada sem afetar o resto do código, pois temos usado triggerMethod em vez de um método direto de chamada.Além disso, será mais fácil para testar mais tarde (pequenos testes, com ponto único de falha):

  • teste que "formulário:dados:erro de" evento é acionado quando um usuário insere informações incorretas
  • teste que quando "formulário:dados:erro de" evento é acionado, o erro é registrado
  • etc.

Outras dicas

trigger(name)

  • Parte de Backbone.js
  • Dispara o evento usando o nome passado

triggerMethod(name)

  • Parte de Marionnete.js
  • Faz de tudo trigger(name) não
  • Também chamadas de métodos pré-definidos convenção de nomenclatura.

    por exemplo. triggerMethod('foo') vai chamar onFoo()

    por exemplo. triggerMethod('foo:bar') vai chamar onFooBar()

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top