如何使用带有范围子参数的uibmodal?

时间:2016-03-06 20:30:25

标签: angularjs angularjs-scope angular-ui

使用angular-boostrap的uibmodal,我想给我的模态一组命名空间的范围参数。我需要将这些范围参数存放在我的父级中以传递给其他控制器,但我也不希望我的模式可以访问我的整个父范围。所以我真正想做的是:

//parent controller
$scope.selector = { ... }

var modalInstance = $uibModal.open({
  animation: false,
  controller: 'SelectorController',
  scope: $scope.selector
  templateUrl: 'selector.tpl.html'
});

但是我得到了:

angular.min.js:111 TypeError: c.$new is not a function
at angular.bootstrap-tpls.min.js:8

是否有实现我想要的模式?

2 个答案:

答案 0 :(得分:1)

有一些选项,您可以将params从当前范围传递到模态范围,只需在Controller的param中添加currentUserId

resolve: {
        currentUserId: function () {
          return row.entity._id;
        }
}

答案 1 :(得分:0)

我使用的解决方案是使用$rootScope.$new()模块documented here

实际创建一个新的范围变量

这允许我用

实例化我的模态
var modalInstance = $uibModal.open({
  animation: false,
  controller: 'SelectorController',
  scope: $scope.selector,
  templateUrl: 'selector.tpl.html'
});

我的模态现在有一个它可以使用的命名空间范围,但是从我的父范围可以获得对该范围的所有更改。