Angular从模态实例中公开函数?

时间:2016-06-02 17:50:44

标签: angularjs service controller

我使用了另一个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函数,它将破坏使用同一控制器的其他项的功能。

我只需要能够在调用此控制器时调用此简单函数。

1 个答案:

答案 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