2015-06-04 181 views
0

獲取控制器我有指令結構類似這樣從角範圍

Parent 
|-----Wrapper---| 
       |----Direct 1 
       |----Direct 2 
       |----Direct 3 
       |----Direct 4 

我要訪問一些值Directive 3了。我的計劃是使用上Parent的共享範圍,然後遍歷孩子這樣的 -

.directive('readerDirective',['$timeout',function($timeout){ 
     return { 
      restrict : 'A', 
      link:function(scope, elm, attrs){ 
      var elemDire = elm.find('[Direct3]'); 

      var direScope = angular.element(elemDire).scope(); 

      direScope.$watch('value',function(){ 
       console.log(direScope.value); 
      }); 
      } 
     }; 
     }]) 

但我不能獲得超出Wrapper。我可以訪問Wrapper範圍,但不能訪問子指令。

我想訪問Direct 3的控制器。可能嗎 ?

我無法控制Wrapper和它的孩子作爲一個extrenal angular插件。

回答

0

發現你可以查找的範圍的DOM元素,我想我找到了問題。很抱歉回答我自己的問題,但它可能有助於某人。

DOM執行後我的readerDirective正在渲染。有了這個,我無法找到這個元素。

的解決方案是使用

$timeout(function(){ 
},0) 

事情是這樣的工作:

.directive('readerDirective',['$timeout',function($timeout){ 
     return { 
      restrict : 'A', 
      link:function(scope, elm, attrs){ 

     $timeout(function(){ 
      var elemDire = elm.find('[Direct3]'); 

      var direScope = angular.element(elemDire).scope(); 

      direScope.$watch('value',function(){ 
       console.log(direScope.value); 
      }); 
     },0); 

     } 
    }; 
    }]) 
0

我覺得您不可能修改/覆蓋Wrapper,但是您是否考慮過僅僅使用$rootScope來分享您的值?

或者,如果你可以通過 angular.element(ELEMENT_SELECTOR).scope()

+0

我不想修改外部插件讓我的變化對亭子更新擦拭。我嘗試過使用find()來訪問子指令,但它總是適用於'wrapper',但除此之外它不起作用 – Sushant