目前,当我关闭模态时,我试图触发一个事件。我发现这个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 one和this 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()。这可能不是最好的方法,但对我来说已经足够了。