代码之家  ›  专栏  ›  技术社区  ›  Petran

从父控制器访问指令作用域

  •  0
  • Petran  · 技术社区  · 6 年前

    我正在使用angularjs ui tour https://github.com/benmarch/angular-ui-tour 我已经成功安装了指令, 现在,我想在加载页面时初始化控制器中的指令。

    在我的路线上,我有以下代码

    when('/start', {
        templateUrl: 'start.html',
        controller: 'startController'      
    })
    

    在模板上开始。html,我有以下代码

    <div ui-tour class="myClass">
    

    所以我想从startController访问ui tour scope的tour变量,我该怎么做?

    2 回复  |  直到 6 年前
        1
  •  0
  •   CodeSmith    6 年前

    这取决于指令是如何定义的。它是否创建了一个新的范围?它的范围是继承的还是孤立的。最简单的解决方案是让您的指令不创建新的作用域,而是使用父级的作用域。如果它是相同的作用域,只需从父控制器调用指令中的函数,就像您对该控制器中的函数所做的那样。

    有关为什么不是一个直截了当的答案以及定义与范围有关的指令时有哪些选项的更多信息,我发现以下链接对此进行了很好的解释:

    directives and scopes

        2
  •  0
  •   Gabe Gates    6 年前

    看一下文档,这似乎是可能的。通过 uiTourService documentation

    yourModule.controller('startController',
    ['$scope', 'uiTourService', function($scope, uiTourService) {
        var myTour = uiTourService.getTour();
    }]);