我有一个backbone-extend.js 文件,我将它加载到app.js 中的require 定义中。它有一个 Backbone.View 扩展类,定义了几个辅助方法。在我看来,其中两种方法工作得很好,一种总是与Uncaught TypeError: Object [object global] has no method 'gotoUrl'. 为什么只有这一种方法没有定义,而其他两种工作正常?您是否在此代码中看到任何问题...
// Filename: backbone-extend.js
define([
    'jquery',
    'underscore',
    'backbone'
], function($, _, Backbone) {
    var helpers = {
        eventSyncError: function(model,response,options) {
            console.log('Sync error='+response.statusText);
            $('#server-message').css({'color':'red', 'font-weight':'bold'}).text(response.statusText);
        },
        gotoUrl: function(url,delay) {
            var to = setTimeout(function() { Backbone.history.navigate(url, true); }, delay);
        },
        getFormData: function(form) { 
            var unindexed_array = form.serializeArray();
            var indexed_array = {};
            $.map(unindexed_array, function(n, i) {
                indexed_array[n['name']] = n['value'];
            });
            return indexed_array;
        }
    }
    _.extend(Backbone.View.prototype, helpers);
});
这是调用它的视图中的代码...
    eventSyncMemberSaved: function(model,response,options) {
        console.log("Member saved!");
        $('#server-message').css({'color':'green', 'font-weight':'bold'}).text("Member saved!");
        this.gotoUrl('members',2000);
        //setTimeout(function() { Backbone.history.navigate('members', true); }, 2000);
    },
    saveMember: function() {
        var data = this.getFormData($('#member-form'));
        this.member.save(data, { success: this.eventSyncMemberSaved });
    },
在此先感谢您的帮助。我被困住了。