0

提案とコードサンプル

私はバックボーン マリオネットを初めて使用します。モーダル ダイアログ (「JoinCommunityDetailWidgetview.js」) を開くビュー (「JoinCommunityNonmemberWidgetview.js」) があります。ビュー JoinCommunityNonmemberWidgetview.js の特定の関数「submitsuccess」を呼び出すことによってどうすれば達成できますか。

モーダルのコードは次のとおりです。

define(

[
    "grads",
    "views/base/forms/BaseFormLayout",
    "models/MembershipRequestModel",
    "require.text!templates/communitypagewidget/JoinCommunityWidgetDetailTemplate.htm",
],

function (grads, BaseFormLayout, MembershipRequestModel, JoinCommunityWidgetDetailTemplate) {
    // Create custom bindings for edit form

    var MemberDetailbindings = {
        '[name="firstname"]': 'FirstName',
        '[name="lastname"]': 'LastName',
        '[name="organization"]': 'InstitutionName',
        '[name="email"]': 'Email'
    };

    var Detailview = BaseFormLayout.extend({

        formViewOptions: {

            template: JoinCommunityWidgetDetailTemplate,
            bindings: MemberDetailbindings,
            labels: {
                'InstitutionName': "Organization"
            },

            validation: {
                'Email': function (value) {
                    var emailconf = this.attributes.conf;
                    if (value != emailconf) {
                        return 'Email message and Confirm email meassage should match';
                    }
                }
            }


        },

        editViewOptions: {
            viewEvents: {
                "after:render": function () {
                    var self = this;
                    var btn = this.$el.find('#buttonSubmit');
                    $j(btn).button();
                }
            }
        },



        showToolbar: false,

        editMode: true,

        events: {
            "click [data-name='buttonSubmit']": "handleSubmitButton"
        },

        beforeInitialize: function (options) {

            this.model = new MembershipRequestModel({ CommunityId: this.options.communityId, MembershipRequestStatusTypeId: 1, RequestDate: new Date() });


        },

        onRender: function () {


            BaseFormLayout.prototype.onRender.call(this)
        },
        handleSubmitButton: function (event) {
            this.hideErrors();
            //  this.model.set({ conf: 'conf' });
            this.model.set({ conf: this.$el.find('#confirmemail-textbox').val() });
            //this.form.currentView.save();
            //console.log(this.form);
            this.model.save({}, {
                success: this.saveSuccess.bind(this),
                error: this.saveError.bind(this),
                wait: true
            });
        },

        saveSuccess: function (model, response) {
            var mesg = 'You have submitted a request to join this community.';
            $j('<div>').html(mesg).dialog({
                title: 'Success',
                buttons: {
                    OK: function () {
                        $j(this).dialog('close');
                    }
                }
            });
            grads.modal.close();

        },

        saveError: function (model, response) {
           var msg = 'There was a problem. The request could not be processed.Please try again.';
            $j('<div>').html(msg).dialog({
                title: 'Error',
                buttons: {
                    OK: function () {
                        $j(this).dialog('close');
                    }
                }
            });

        }

    });

    return Detailview;
}

);

4

1 に答える 1