javascript - 主干集合 - fetch(),成功回调不工作

标签 javascript backbone.js

我在 Backbone Js 中编码,这是我的代码:

var Router, UserList, Users, router, userList;

    $.ajaxPrefilter(function(options, originalOptions, jqXHR) {
      return options.url = "http://backbonejs-beginner.herokuapp.com" + options.url;
    });

    Users = Backbone.Collection.extend({
      url: '/users'
    });

    UserList = Backbone.View.extend({
      el: '#app',
      render: function() {
        var users;
        users = new Users();
        return users.fetch({
          success: function() {
            return console.log("Please log something!! ");
          }
        });
      }
    });

    userList = new UserList();

    Router = Backbone.Router.extend({
      routes: {
        '': 'home'
      },
      home: function() {
        console.log('Welcome home my friend!!');
        return userList.render();
      }
    });

    router = new Router();

    Backbone.history.start();

但是 collection.fetch() 中的成功回调不起作用。它没有记录任何东西!

这是 JsFiddle:jsfiddle.net/9DjPY/1

请帮帮我!

最佳答案

如果您想更改 AJAX 实现,Backbone 的方法是扩展他们的方法 Backbone.ajax 而不是更改 jQuery

View 应该返回它自己而不是集合实例。 此外,您可能应该听添加或重置,而不是听成功。

var Router, UserList, Users, router, userList,
    oldSync = Backbone.sync;
Backbone.ajax = function(options) {
    var args = Array.prototype.slice.call(arguments, 1);
    options || (options = {});
    if (options.url) {
        options.url = (/^https?/.test(options.url) ? '' : 'http://backbonejs-beginner.herokuapp.com') + options.url;
    }
    return Backbone.$.ajax.apply(Backbone.$, [options].concat(args));
};
Users = Backbone.Collection.extend({
  url: '/users'
});

UserList = Backbone.View.extend({
  el: '#app',
  initialize: function () {
      this.collection = new Users();
  },
  render: function() {
      this.collection.fetch({
          success: function () { console.log('Users', arguments) }
      });
      return this;
  }
});

userList = new UserList();

Router = Backbone.Router.extend({
  routes: {
    '': 'home'
  },
  home: function() {
    console.log('Welcome home my friend!!');
    return userList.render();
  }
});

router = new Router();

Backbone.history.start();

这是一个工作示例 - http://jsfiddle.net/hypernurb/9DjPY/5/ .

希望这对您有所帮助。

关于javascript - 主干集合 - fetch(),成功回调不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21801094/

相关文章:

javascript - 如何处理 JavaScript 中未定义的函数参数的解构?

javascript - jquery .bind ('click.select' )在移动设备上不起作用

javascript - 如何使用 jquery-animate 或 Javascript 删除 css

javascript - Google 分析代码和带有 php header 位置的重定向

javascript - Angular.js Backbone.js 和其他 MV* 模式的 js 库?

javascript - this.$something = this.$ ('something' ) 是什么意思?

javascript - 主路由器在路由 ""末尾附加一个 #,导致 dom 引用 anchor 在 Backbone/Require 应用程序中不起作用

javascript - 如何在 Recline JS 中将记录附加到数据集?

javascript - 如何检测javascript中递归异步调用的完成

javascript - IE TextRange 选择方法无法正常工作