当前位置: 首页 > 面试题库 >

使用controllerAs语法时将当前范围传递给modalInstance

长孙昀
2023-03-14
问题内容

我正在使用controllerAs语法来避免控制器中的$ scope汤,并且还使用ui.bootstrap来呈现模式视图。

我需要打开一个与当前控制器共享相同作用域的modalInstace。注入示波器时,您可能会执行以下操作:

var modalInstance = $uibModal.open({
      templateUrl: 'addEditModal.html',
      scope: $scope
    });

但是,由于我没有注入作用域,而是使用controllerAs语法,因此无法正常工作。

根据我的发现,您将需要使用resolve来传递数据,但是必须通过函数显式传递数据。有没有办法通过整个范围?

在这种模式下,我需要做很多事情,传递数据负载似乎过大了。

不想这样做,因为看起来很杂乱…

var modalInstance = $modal.open({
  templateUrl: 'myModalContent.html',
  controller: 'ModalInstanceCtrl',
  resolve: {
    user: function() {
        return vm.user;
    },
    something: function() {
        return vm.something;
    },
    blah: function() {
        return blah;
    }
  }
});

还有更好的主意吗?


问题答案:

我需要打开一个与当前控制器共享相同作用域的modalInstace。

模态服务创建继承的范围。和

var modalInstance = $uibModal.open({
  templateUrl: 'addEditModal.html',
  scope: $scope
});

不会注入作用域,而是为模式控制器指定父作用域(否则,将根作用域用作父作用域)。

由于controllerA在父控制器上使用,因此模态控制器将可以访问vm其范围内的继承对象。



 类似资料:
  • 问题内容: 将“当前”传递给AngularJS服务是否正确? 我处于一种$ service的状态,知道它仅由一个控制器使用,并且我想在$ service方法本身中引用该控制器的作用域。 这在 哲学上是 正确的吗? 还是最好将事件广播到$ rootScope,然后让我的控制器侦听它们? 问题答案: 要让控制器知道何时发生异步,请使用Angular promises。 要触发,您不需要作用域,可以调用

  • 我正在使用Elessar库创建一个多范围选择器:https://github.com/quarterto/Elessar 到目前为止效果很好,除了一件事...我似乎找不到任何将ID传递到预填充范围的功能。如果需要更新从数据库加载的现有范围,这就有问题了。 以下是文档中提供的选项: 理想情况下,我认为,您应该能够通过一个ID([min,max,ID])的范围,这样您就可以在更新滑块时检测到实际更改了

  • 问题内容: 是否可以通过某种方式将一个函数的范围传递给另一个函数? 例如, 我宁愿直接访问变量,即,不使用类似或的任何东西,而只是直接使用或。 问题答案: 真正访问函数私有范围的唯一方法是在函数内部声明,这样就形成了一个闭包,允许隐式访问变量。 这是您的一些选择。 直接访问 在内部声明。 如果您不想在中使用,则可以将它们都放在更大的容器范围内: 这些是您可以直接使用的变量而无需任何额外的代码来移动

  • 问题内容: 与Firebase问题相比,这更像是JavaScript关闭问题。在以下代码中,Firebase回调无法识别父作用域中的变量myArr。 问题答案: 回调函数可以很好地识别/修改。问题是,当执行标记为“不工作”的标签时,回调尚未触发。 让我们稍微更改一下代码: 现在,可能会更容易了解发生了什么。 您注册一个侦听器,该侦听器将调用添加到Firebase中的每个帖子 这将导致对服务器的调用

  • 问题内容: 好的,所以我想在动态生成的模板url中使用作用域变量。所以我尝试了这个: html js 我原本希望返回的值,但最终却得到了。结果导致templateUrl为。 那么,我该怎么办才能获取范围变量的值而不是原始文本? 问题答案: 作用域值不能从指令的templateUrl中访问。这些属性尚未编译,因此无法在此上下文中访问范围。 这是一种可能适合您的解决方法。 见Plunkr 我在这里所做

  • 问题内容: 我正在使用CURL将数据插入elasticsearch,当我插入固定数据时,它可以正常工作。我正在尝试获取当前DateTime并分配给变量,并与我要插入的对象一起使用。 这是我的剧本, 我需要获取当前的DateTime并分配给CreateDate。我怎样才能做到这一点? 问题答案: 建议不要使用引号内的引号,而是建议使用 here-doc 摆脱所有魔术引号。这样使用: