backbone.js - pelicula - marionette pixar
¿Cuál es la diferencia entre url vs urlRoot? (1)
.urlRoot
solo está disponible en un modelo, y solo es útil cuando un modelo no forma parte de una colección, o cuando desea anular la propiedad .url
de la colección de la que forma parte ese modelo.
En otras palabras, un modelo no requiere las propiedades .url
ni .urlRoot
cuando forma parte de una colección con un .url
propiedades .url
, en cuyo caso este modelo utilizará el .url
esa colección como su propio .urlRoot
.
Aquí hay varios ejemplos que muestran la diferencia. Cuando ejecuta los scripts, las solicitudes http se pueden ver en el panel de red del navegador.
Ejemplo 1. La publicación no es parte de una colección. urlRoot
define la parte base de la url. Cuando se busca un modelo, su ID se adjunta al urlRoot
.
var Post = Backbone.Model.extend({
urlRoot: ''http://jsonplaceholder.typicode.com/posts''
});
var secondPost = new Post({ id: 2 });
secondPost.fetch();
/*requests http://jsonplaceholder.typicode.com/posts/2 */
<script src=''http://code.jquery.com/jquery.js''></script>
<script src=''http://underscorejs.org/underscore.js''></script>
<script src=''http://backbonejs.org/backbone.js''></script>
Ejemplo 2. Al llamar a fetch en un modelo que forma parte de una colección, utiliza la url
la colección como urlRoot
var Post = Backbone.Model.extend();
var Posts = Backbone.Collection.extend({
url: ''http://jsonplaceholder.typicode.com/posts'',
model: Post
});
var posts = new Posts();
posts.add({id: 2});
posts.first().fetch();
/*requests http://jsonplaceholder.typicode.com/posts/2 */
<script src=''http://code.jquery.com/jquery.js''></script>
<script src=''http://underscorejs.org/underscore.js''></script>
<script src=''http://backbonejs.org/backbone.js''></script>
Ejemplo 3. El conjunto de url
en un modelo utilizará literalmente ese url para cualquier instancia de modelo.
var Post = Backbone.Model.extend({
url: ''http://jsonplaceholder.typicode.com/posts''
});
var secondPost = new Post({ id: 2 });
secondPost.fetch();
/*requests http://jsonplaceholder.typicode.com/posts */
<script src=''http://code.jquery.com/jquery.js''></script>
<script src=''http://underscorejs.org/underscore.js''></script>
<script src=''http://backbonejs.org/backbone.js''></script>
Ejemplo 4. url
puede ser una función y comienza a tener sentido nuevamente.
var Post = Backbone.Model.extend({
url: function(){
return ''http://jsonplaceholder.typicode.com/posts/'' + this.get(''slug'');
}
});
var secondPost = new Post({ slug: 2 });
secondPost.fetch();
/*requests http://jsonplaceholder.typicode.com/posts/2 */
<script src=''http://code.jquery.com/jquery.js''></script>
<script src=''http://underscorejs.org/underscore.js''></script>
<script src=''http://backbonejs.org/backbone.js''></script>
Me gustaría saber cuál es la diferencia entre usar url
o urlRoot
. He leído la documentación ( backbonejs.org/#Model-url ), pero sigo sintiendo que no tengo conocimiento en esta área y me gustaría saber más. ¿Cuándo tienes que usar url
? Y en otro caso, ¿cuándo tienes que usar urlRoot
?