[关闭]
@52fhy 2016-01-22T16:38:53.000000Z 字数 1546 阅读 351

05-backbone集合--与服务器交互

backbone


集合通过fetch方法发送get请求与服务器进行交互。成功后,将会将服务器传来的数据与集合本身合并。

相比Model的fetch方法,集合可以获取更多数据。

可以设置reset:true属性,触发reset

  1. <!DOCTYPE html>
  2. <head>
  3. <meta charset="utf-8">
  4. <title>title</title>
  5. <script src="lib/jquery-1.10.2.js"></script>
  6. <script src="lib/underscore.js"></script>
  7. <script src="lib/backbone.js"></script>
  8. </head>
  9. <body>
  10. <script>
  11. var book = Backbone.Model.extend({
  12. initialize: function(){
  13. //console.log('Hey , you create me!');
  14. },
  15. //默认属性
  16. defaults: {
  17. title:'well'
  18. }
  19. });
  20. //定义collection
  21. var books = Backbone.Collection.extend({
  22. model: book,
  23. });
  24. var book1 = new book({title: 'book1'});
  25. var book2 = new book({title: 'book2'});
  26. var book3 = new book({title: 'book3'});
  27. //books实例
  28. var bookself = new books;
  29. //books有add方法,添加model
  30. bookself.add(book1);
  31. bookself.add(book2);
  32. bookself.add(book3);
  33. bookself.each(function(value, key, list){
  34. //value是每个model
  35. console.log(value.get('title'));
  36. });
  37. console.log(bookself);
  38. var showAllBooks = function(){
  39. bookself.each(function(book){
  40. //将book数据渲染到页面的操作。
  41. document.writeln(book.get('title'));
  42. });
  43. }
  44. bookself.bind('reset',showAllBooks);
  45. //给collection添加url属性
  46. //bookself.url = 'data/collection.json';
  47. //fetch方法
  48. //fetch执行之后,发现所有地方的bookself里面的model都动态改变了
  49. //实际情况下服务器应返回对应的BookShelf的返回格式如下:[{"title":"b1"},{"title":"b2"}]
  50. bookself.fetch({
  51. url : 'data/collection.json',
  52. reset: true, // 需要主动传递reset,才会触发reset。具体含义?
  53. //相应的第一个参数变为collection
  54. success:function (collection,res,options) {
  55. console.log(collection,res,options);
  56. collection.each(function (model) {
  57. console.log(model.get('title'));//b1,b2
  58. });
  59. },
  60. error:function (collection,res,options) {
  61. console.log(res);
  62. }
  63. });
  64. </script>
  65. </body>

collection.json

  1. [{"title":"b1"},{"title":"b2"}]
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注