Estou testando o Backbone.js, e uma das coisas que estou tentando é fazer uma chamada para uma API remota; portanto, preciso substituir o Backbone.sync, pois entendo a documentação .
Não há um exemplo de como fazer isso na própria documentação e não parece haver um grupo do Google para o Backbone ... alguém pode apontar um exemplo para fazer isso?
javascript
backbone.js
picardo
fonte
fonte
Respostas:
Dê uma olhada neste exemplo de fonte anotado em que eles substituem
Backbone.sync
por uma alternativa de armazenamento localbackbone-localStorage
Basicamente, o Backbone.sync deve ser uma função que recebe 4 argumentos:
Você precisa disparar um
options.success
ouoptions.error
dependendo domethod
êxito. Os métodos estão no formato:"create"
: esperado que você crie o modelo no servidor"read"
: esperado que você leia este modelo no servidor e o devolva"update"
: esperado que você atualize o modelo no servidor com o argumento"delete"
: esperado que você exclua o modelo do servidor.Você precisa implementar esses 4 métodos e definir o que quiser para o seu
"server"
Claro que estas são apenas as coisas que
Backbone.sync
devem ser implementadas. Você pode implementar maismethods
e transmitir mais paramaters,success
mas é melhor não fazer isso.É melhor garantir que ele faça o mesmo
Backbone.sync
que atualmente, para que sua programação para uma interface e não para uma implementação. Se você quiser mudar o seu modificadoBackbone.sync
para, por exemplo, o localStorage, você não precisará estendê-lo por conta própria para corresponder ao seu Backbone.sync estendido "[Editar]
Observe também que você pode usar várias implementações de
sync
. Todas as referências aBackbone.sync
são verdadeiras,(this.sync || Backbone.sync)
então você só precisa fazer algo como:Backbone.sync
é apenas o padrão global usado por todos os modelos, a menos que os modelos tenham umsync
método definido especificamente.fonte
(this.sync || Backbone.sync)
Veja editar. Uma dica adicional é ler a fonte anotada do backbone. Está tudo lá!sync
de qualquer lugar do seu código (normalmente um overryddensync
), basta fazer aBackbone.sync.call(this, method, this, options)
.Sei que esta resposta é um pouco tarde demais, e a resposta do @Raynos é ótima, mas fiz de forma um pouco diferente e talvez seja útil para você ou para qualquer outra pessoa que tente usar uma API com o Backbone.
Em vez de substituir o Backbone.sync, substitui o Backbone.ajax , porque é onde a solicitação do ajax é feita.
Aqui está um exemplo:
fonte
Normalmente, preciso substituir o
sync
método do backbone quando preciso sincronizar apenas determinados atributos. Uma implementação típica é assim:fonte
Backbone.sync.apply(this, arguments);
? É um pouco mais flexível se você, por exemplo, decidir deixar de fora o argumento "opções" na versão substituída dosync
.Backbone.model.save(attributes, {patch: true})
para fazer atualizações parciais agora