AngularJS子指令链接函数在页面上为每个父指令多次触发

时间:2013-04-28 08:23:49

标签: javascript angularjs angularjs-directive

我正试图围绕angularjs指令。我有一个父指令,在我的页面上有4个实例。其中一个父指令包含CHILD指令的实例。

子指令的链接功能似乎运行了4次,因为我在控制台中看到以下内容4次:

child linking function

知道为什么/如何修复?谢谢!

PARENT:

Module.directive 'collapseWidget', () ->
  directive =
    restrict:   'A'
    transclude: true
    template:   viewCollapseWidget
    scope: 
      title:        '@title'
      widgetThemis: '@widgetThemis'
      color:        '@color'
      model:        '='

    #replace: true
    compile: (element, attrs, transclusionFunc) ->
      (scope, iterStartElement, attrs) ->

        #if scope.buttons
          #console.log scope.buttons
        scope.collapsed = false

        scope.toggle = () ->
          scope.collapsed = !scope.collapsed

        origElem   = transclusionFunc scope
        content    = origElem.text()
        scope.orig = content
        scope.obj  = content

CHILD:

Module.directive "myTable", ->
      directive =
        restrict: 'A'
        scope: 'isolate'
        link: (scope, element, attrs) ->
          console.log 'child linking function'
          return

2 个答案:

答案 0 :(得分:0)

您是否收到任何控制台错误?

我问的原因是在你的孩子'myTable'指令中你将范围定义为String而不是空Object。可能因为此而未隔离范围,而是使用父范围。

答案 1 :(得分:0)

我知道我的体重很晚,但这个问题的答案很简单。 link函数将被调用多次,因为您拥有该指令的实例。