关闭模态对话框后,刷新基本视图

时间:2013-08-26 19:56:01

标签: marionette

建议和代码示例

我是Backbone marionette的新手,我有一个视图(“JoinCommunityNonmemberWidgetview.js”),它打开一个模态对话框(“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;
}

);

1 个答案:

答案 0 :(得分:0)

我会使用Marionette的活动框架。 看看:https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.commands.md

具体来说,您需要:

1)创建一个木偶应用程序:

App = new Marionette.Application();

2)使用该应用程序设置事件处理程序

//Should be somewhere you can perform the logic you are after 
App.commands.setHandler('refresh');

3)发射一个“命令”,然后让牵线木偶引导事件

App.execute('refresh');