无法读取未定义的BackboneJS的属性'replace'

时间:2015-03-03 12:09:29

标签: backbone.js requirejs

我正在尝试使用模块化BackboneJS渲染View(customerEditView),但它给了我未捕获的类型错误。

这是我的router.js文件:

define([
'jquery',
'underscore',
'backbone',
'views/Customers/CustomerEditView',
'views/Customers/CustomerListView'
], function($, _, Backbone, CustomerEditView, CustomerListView) {

    var Router = Backbone.Router.extend({
        routes: {
            "customers": "customerhome",
            "editcustomer/:id": "editcustomer",
            "newcustomer": "editcustomer",
        },

        customerhome: function () {
            var customerListView = new CustomerListView();
            customerListView.render();
        },

        editcustomer: function (id) {
            var customerEditView = new CustomerEditView();
            customerEditView.render({ id: id });
        }
    });

    var initialize = function () {

        var router = new Router;
        Backbone.history.start();

    };

    return {
        initialize: initialize
    };
});

这是我的customerEditView文件:

define([
'jquery',
'underscore',
'backbone',
'router',
'models/Customers/Customer',
'helper/Serialize',
'text!template/Customer/CustomerEditTemplate.html'
], function ($, _, Backbone, router, Customer, Router, serializeObject, CustomerEditTemplate) {

    var CustomerEditView = Backbone.View.extend({
        el: '.page',
        events: {
            'submit .edit-customer-form': 'saveCustomer',
            'click .delete': 'deleteCustomer'
        },
        saveCustomer: function (ev) {
            var customerDetails = $(ev.currentTarget).serializeObject();
            var customer = new Customer();
            customer.save(customerDetails, {
                success: function (customer) {
                    Backbone.history.navigate('', { trigger: true });
                }
            });
            return false;
        },
        deleteCustomer: function (ev) {
            this.customer.destroy({
                success: function () {
                    console.log('destroyed');
                    Backbone.history.navigate('', { trigger: true });
                }
            });
            return false;
        },
        render: function (options) {
            var that = this;
            if (options.id) {
                that.customer = new Customer({ id: options.id });
                that.customer.fetch({
                    success: function (customer) {
                        var template = _.template(CustomerEditTemplate);
                        that.$el.html(template({ customer: customer }));
                    }
                });
            } else {
                var template = _.template(CustomerEditTemplate);
                that.$el.html(template({ customer: null }));
            }
        }
    });

    return CustomerEditView;
});

0 个答案:

没有答案