【问题标题】:how to pass a function as a argument to another function in a controller in angularjs?如何将函数作为参数传递给angularjs中控制器中的另一个函数?
【发布时间】:2015-09-16 19:44:39
【问题描述】:

一个很常见的问题。非常感谢您的帮助!

我无法在 SignupCtrl 中将 loginCtrl 作为参数传递

如果有任何适当的方法可以做到这一点,请提出建议

这是代码

     $scope.loginCtrl = function ($scope, $modalInstance) {
            $scope.cancelLogin = function () {
                $modalInstance.dismiss('cancel');
            }
        };

     $scope.signupCtrl = function ($scope, $modalInstance,loginCtrl){
$scope.close1=loginCtrl.cancelLogin;
            $scope.cancelLogin = function () {
                $modalInstance.dismiss('cancel');
            }
        };

【问题讨论】:

  • 你如何使用signupCtrl
  • 我在函数 $scope.open 中使用它通过按钮 ng-click="open()" 来打开模式
  • 一个简单的例子来调用一个函数作为控制器中另一个函数的参数将是一个很大的帮助。 @dfsq
  • 你这样做完全不正确。我开始写一个答案,解释说使用$scope 意味着第一个$scope.cancelLogin 实际上被第二个覆盖了,但这实际上并不重要,因为你在cmets 中对其他帖子的描述没有意义反正。您不能从另一个对话框中调用一个对话框,因为一开始您一次只能激活一个对话框。

标签: angularjs angular-ui-bootstrap


【解决方案1】:

绑定点击事件。

user.showModalDialog = function (item) {

    var obj = {
        selectedItem: item
    };
    _showModalDialog(obj);

};

_showModalDialog 方法

var _showModalDialog = function (params) {
    $modal.open({
        templateUrl: "your html template URL",
        backdrop: 'static',
        windowClass: 'modal-width-50',
        resolve: {
            params: function () { return params; }
        },
        controller: function ($scope, $modalInstance, params) {
           var user = params.selectedItem;
          // you can receive your params here in params.
          $scope.user=user;
   }

另一种方法,

var _showModalDialog = function (params) {
        $modal.open({
            templateUrl: "your html template URL",
            backdrop: 'static',
            controller: _userCtrl,
            windowClass: 'modal-width-50',
            resolve: {
                params: function () { return params; }
            }});

它的控制器在同一个文件中,它的内联控制器,你也可以在外部文件中。

var _userCtrl = ['$scope', '$modalInstance', 'params', function ($scope, $modalInstance, params) {
       var user = params.selectedItem;
       // you can receive your params here in params.
 $scope.user = user;
    }];

第二种方法是,您可以使用服务在两个控制器之间传递数据。

【讨论】:

  • 感谢 kashif bhai... 我能够打开模态但我想从另一个模态中的链接打开模态。为此,我想知道如何将一个函数作为参数传递给另一个函数,以便我可以关闭第一个模态并打开另一个模态。
  • 我已经更新了答案,您也可以使用第二种方法。对于您的特定场景,在单击事件中您关闭第一个对话框并打开另一个。它很简单。我希望您得到答案,而不是将其标记为答案 :) 如果您仍然遇到问题,请出示您的工作副本,我会通过查看来提供帮助。或者你可以制作 jsfiddle 。
猜你喜欢
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-08
  • 2017-08-07
  • 2019-10-09
  • 2019-08-19
  • 1970-01-01
相关资源
最近更新 更多