我使用了另一个Stack Overflow问题的代码
$modalInstance.opened.then(function(){
alert('hi');
});
在警报部分,我想调用一个驻留在modalcontroller上的函数。我怎么能这样做?
我的模态调用位于
之下this.OpenMyModal = function(){
var modalInstance = $modal.open({
backdrop: 'static',
templateUrl: 'MyAddress/MyController/MyMethod',
controller: 'modalController',
resolve: {
myTemplateUrl: function(){
return myTemplateUrl;
}
}
});
modalInstance.rendered.then(function () {
/*modalcontroller function to call goes here;*/
modalController.SearchClick();
});
return modalInstance.result.then(function (returnedInput) {
return returnedInput;
}, function () {
// dismissed with cancel button
return "";
})
}
目前,模态控制器用于搜索。在我想调用的模态控制器中有一个onclick函数。控制器上的功能称为
$scope.SearchClick = function()
{
$scope.Search();
}
如果我在初始化控制器时调用click函数,它将破坏使用同一控制器的其他项的功能。
我只需要能够在调用此控制器时调用此简单函数。
答案 0 :(得分:0)
这里是plunker
在这个plunker中,我用两种方式调用模态中的函数。
在第一种方式中,我在模态出现后调用模态函数。 在第二种方式中,我使用事件调用模态函数。我从我的控制器和模态控制器中触发此事件,我有一个等待此事件的监听器。
方法1: 在你的模态控制器中创建一个方法"初始化" (只是一个例子)。
function initialize() {
// Here you can call your function
console.log('Method 1, Call your function now!');
$scope.myFunctionInsideModal();
}
在模态控制器中调用此方法
initialize(); // Initialize stuff
方法2: 从控制器中触发事件
$rootScope.$broadcast('myCustomEvent', 'any data');
并在你的模态控制器中放置一个监听器:
$scope.$on('myCustomEvent', function(event, data) {
// Here you can call your function
console.log('Method 2, Call your function now! ');
$scope.myFunctionInsideModal();
})
希望它有所帮助。
有关详细信息和工作示例,请参阅plunker。