【问题标题】:Inject Directive's Controller inside the same Directive在同一个指令中注入指令的控制器
【发布时间】:2013-11-24 23:49:43
【问题描述】:

我正在构建一个基于 AngularJs 和 GMaps API v3 的应用程序。我提出的问题是我需要一种方法来从另一个指令(使用 require 很容易)和同一个指令调用指令控制器的方法。

举个例子吧:

我有一个使用 GMaps JS lib 渲染地图的指令。并且还呈现一些标记,而且我还有另一个处理导航的指令(即更改路线)。当我从 A 路到 B 路时,我需要擦除标记并将地图留空。

那么,实现这一目标的最佳方法是什么?我应该建立三个指令吗?一个包含所有渲染方法和销毁标记方法,然后从其他指令中调用它们?或者有没有办法将指令的控制器注入到同一个指令中?

【问题讨论】:

    标签: javascript google-maps angularjs google-maps-api-3


    【解决方案1】:

    所以我用谷歌搜索了一下,我找到了这个!

    https://github.com/bennadel/AngularJS-Directive-Controllers/blob/master/app/directives/master.js#L11

    就像你说的@musically_ut 控制器在链接函数之前执行,所以它可以被注入到链接函数中。并使其方法可用。

    【讨论】:

      【解决方案2】:

      指令的controllerlink 函数之前执行,并且控制器 中所做的所有$scope 声明都在同一指令的scope 上可用。

      因此,控制器注入指令本身。

      演示:http://plnkr.co/edit/HnwJ0w0VTLbNOC87k74n?p=preview

      【讨论】:

      • mmmm,我试过这样的东西:控制器:function(){this.method = function(){做某事}},链接:function(Controller){Controller.method();并没有工作:(
      • @FacuFerrari 检查随附的演示。
      • mmm 我认为如果我将它附加到 $scope 它将与在全局控制器中声明该方法相同。不是吗?
      • @FacuFerrari 我认为您将$rootScope$scope 混淆了。另外,看看这个:stackoverflow.com/questions/11605917/…
      • 是的,也许,请看看这个。这就是我想要实现的目标:plnkr.co/edit/pArUFDIWwZmxDXxCW3cG?p=preview
      猜你喜欢
      • 2016-01-26
      • 2023-03-13
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 2013-03-15
      • 2014-02-21
      • 2014-09-01
      • 1970-01-01
      相关资源
      最近更新 更多