隐藏事件的角度模式莫代尔

时间:2018-04-04 09:07:04

标签: javascript angularjs angular-strap

目前,当我关闭模态时,我试图触发一个事件。我发现这个plunker具有我想要创建的功能。当我尝试在我自己的js文件中重新创建这个plunker时,它似乎不起作用。下面的代码是我的主要js文件的一部分。如果按下某个按钮,则会触发这段代码。

        function editActivity(activityId) {
        var editModal = $modal({
            templateUrl: '/DesktopModules/Name/Angular/ViewModels/main/edit.html',
            locals: {
                activityId: activityId
            },
            controller: 'editCtrl',
            controllerAs: 'vm',
            show: true,
            keyboard: false,
            backdrop: 'static'
        });
        editModal.result.then('modal.hide', function (result) {
            alert("finally")
            if (result === true) {
                // Reload the list if the selected was updated.
                searchActivities();
            }
        });
    return null;
    }

此代码创建一个模态但我收到以下错误:

Cannot read property 'then' of undefined
at mainController.editActivity

当我尝试关闭模态时,会给出一条新的错误消息。关闭模态的代码是:

 function saveActivity() {
        var updateData = {
            Id: vm.EditActivity.Id,
            Zipcode: vm.EditActivity.Zipcode,
            AreaType: vm.EditActivity.AreaType,
            Activities: vm.EditActivity.Activities
        }
        apiService.updateActivity(updateData);
        $modal.close(true);
    }
}

错误消息是:

$modal.close is not a function
at editController.saveActivity

我发现了几个与此主题相关的问题 this onethis one但这些解决方案似乎都不适用于我。请记住,我正在使用角带。

在查看了模态(site)的可能选项之后,我找到了一个解决方案。

模态的一个选项是:Onhide。当模态被隐藏时,它将触发一个函数。我的新主js文件看起来如下:

    function editActivity(activityId) {
        var editModal = $modal({
            templateUrl: '/DesktopModules/Web2work/Cogas/Angular/ViewModels/main/edit.html',
            locals: {
                activityId: activityId
            },
            controller: 'editCtrl',
            controllerAs: 'vm',
            show: true,
            keyboard: false,
            backdrop: 'static',
            onHide: function () {
                searchActivities();
            }
        });
    }

我从模态js中删除了 $ modal.close()并添加了 hide()。这可能不是最好的方法,但对我来说已经足够了。

0 个答案:

没有答案