从自动完成中的另一个视图调用视图函数

时间:2014-02-12 21:38:12

标签: backbone.js view autocomplete

我的申请表中有以下观点。

sets.js

define([
'jquery',
'underscore',
'backbone',
'bootstrap',
'jqueryui',
'numberformat',
'text!templates/sets/sets.html'

], function ($, _, Backbone, bootstrap, jqueryui, numberformat, setsTemplate) {

var setsView = Backbone.View.extend({

    el: $("#contenido"),

    events: {
        'keyup table tbody input': 'afterRender'
    },

    initialize: function (options) {
        _.bindAll(this, 'render', 'afterRender');
        this.options = options || {};
    },

    render: function () {
        var data = {sets: this.options.sets};
        var compiledTemplate = _.template(setsTemplate, data);
        this.$el.html(compiledTemplate);

        $(".alert").addClass('alert-' + this.options.clase);

        var tabs = $("#tabs").tabs();
        tabs.find(".ui-tabs-nav").sortable({
            axis: "x",
            stop: function () {
                tabs.tabs("refresh");
            }
        });

        $('#emisor').hide();

        this.afterRender();

    },

    afterRender: function () {
        console.log('afterRender');
        var ventasView = new VentasView();
        ventasView.render();
    }
})
return setsView;
});

ventas.js

define([
'jquery',
'underscore',
'backbone',
'bootstrap',
'jqueryui',
'text!templates/cliente/cliente.html',
'models/cliente',
'views/sets/sets'
], function ($, _, Backbone, bootstrap, jqueryui, clienteTemplate, SetsView) {

var clienteView = Backbone.View.extend({

    el: $("#cliente"),

    initialize: function (options) {
        this.options = options || {};
    },

    render: function () {
        $("#cliente").html(clienteTemplate);

        $('#rut').autocomplete(
            {
                source: '/clientes/buscar/',
                minLength: 1,
                dataType: 'json',
                cache: false,
                select: function (event, ui) {
                    $("#rut").val(ui.item.Cliente.rut);
                    $("#id").val(ui.item.Cliente.id);
                    $("#razon").val(ui.item.Cliente.razon);
                    $("#giro").val(ui.item.Cliente.giro);
                    $("#direccion").val(ui.item.Cliente.direccion);
                    $("#comuna").val(ui.item.Cliente.comuna);
                    $("#ciudad").val(ui.item.Cliente.ciudad);

                    var sets = new SetsView();
                    sets.afterRender();

                    return false;
                }
            }).data("autocomplete")._renderItem = function (ul, item) {
            return $("<li></li>").data("item.autocomplete", item).append("<a><strong>" + item.Cliente.rut + "</strong></a>").appendTo(ul);
        };
    }

});

return clienteView;
});

错误

Uncaught TypeError: Object [object Object] has no method 'afterRender'

1 个答案:

答案 0 :(得分:0)

您缺少函数中的参数:

function ($, _, Backbone, bootstrap, jqueryui, clienteTemplate, SetsView)

function ($, _, Backbone, bootstrap, jqueryui, clienteTemplate, clienteModel, SetsView)