Tengo un Clock
modelo en Backbone:
var Clock = Backbone.Model.extend({});
Estoy tratando de obtener una instancia de eso que tenga la información más reciente de /clocks/123
. Algunas cosas que he probado:
un método de nivel de "clase"
Clock.fetch(123)
// TypeError: Object function (){ ... } has no method 'fetch'
creando una instancia y luego invocándola fetch
:
c = new Clock({id: 123})
c.fetch()
// Error: A 'url' property or function must be specified
Una colección
Intenté crear un AllClocks
recurso de colección (aunque no tengo ningún uso para tal cosa en la página):
var AllClocks = Backbone.Collection.extend({
model: Clock,
url: '/clocks/'
});
var allClocks = new AllClocks();
allClocks.fetch(123);
// returns everything from /clocks/
¿Cómo obtengo un reloj respaldado por API?
javascript
model-view-controller
rest
backbone.js
James A. Rosen
fuente
fuente
Respuestas:
Su segundo enfoque es el enfoque que he utilizado. Intente agregar lo siguiente a su modelo de reloj:
Este enfoque asume que ha implementado controladores con el hashbang en su URL como ese, http://www.mydomain.com/#clocks/123 , pero debería funcionar incluso si aún no lo ha hecho.
fuente
[collection.url]/[id]
.Intente especificar urlRoot en el modelo:
De los documentos:
fuente
currentBook.set('id', 13423, {silent:true})
. Esto también funciona, pero no estoy seguro de por qué:currentBook.id = 13423
model.id
es esencialmente sinónimo demodel.attributes.id
. Si llamamodel.set('id')
, Backbone establecemodel.id
lo que haya especificado. Ymodel.id
es lo que se usa al crear la URL específica del modelo.Personalmente recomiendo, siguiendo la documentación del método Model # url
en su colección recuerde agregar la URL de la colección:
y en la función de inicialización de su Vista haga:
de esta manera, la red troncal hará una solicitud ajax usando esta URL:
su modelo será actualizado y la vista renderizada, sin modificar Collection # url o Model # urlRoot
nota: lo siento, este ejemplo salió en el script de café, pero puede traducirlo fácilmente a js agregando declaraciones var
fuente
{}
dentro de las()
's para los objetos pasados y un;
anuncio opcional al final de las líneasComo resultado, realiza una solicitud Ajax en el
y tienes la respuesta JSON de vuelta.
Enjoyiiii !!!
fuente
... y haz esto si no quieres la barra diagonal en el modelo urlRoot:
fuente
Probablemente debería acceder al objeto a través de una colección y mantenerlo en la colección todo el tiempo. Asi es como se hace:
fuente
Quiero usar la URL RESTful, pero no puedo entender por qué no se puede agregar 'postId' a la URL base.
Entonces sé que solo después de configurar 'idAttribute' como 'postId' en Model puedo obtener la URL correcta. Me gusta esto:
fuente