angularjs – 如何将变量从隔离范围指令传递给子节点?

前端之家收集整理的这篇文章主要介绍了angularjs – 如何将变量从隔离范围指令传递给子节点?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个独立的范围指令.理想情况下,我喜欢独立工作,不需要任何自定义模板.第一个指令将是页面滚动观察器,当它到达某一点时,我希望它在另一个指令中触发更新.子指令是否可以在父指令中观察变量?

我已经创建了一个简单的plunkr来说明问题,http://plnkr.co/edit/wwfBzmemyrj1r1R54riM?p=preview

/*
 <div ng-outer>Outer directive {{myvar}}
      <div ng-inner="myvar">Inner directive</div>
    </div>
    */
app.directive('ngOuter',[ '$timeout',function ($timeout) {
    var directive = {
        restrict: 'A',scope:{}
    }
    directive.link = function (scope,element,attrs) {
        $timeout(function(){
          scope.myvar = "test 001"
        },1000)
    }
    return directive;

}]);

app.directive('ngInner',[ function () {
    var directive = {
        restrict: 'A',scope:{ data: '=ngInner',myvar: '=myvar' }
    }
    directive.link = function (scope,attrs) {
        scope.$watch('data',function(newVal,oldVal){
          if(newVal)
          element.text("new inner val",newVal);
        });
          scope.$watch('myvar',oldVal){
          if(newVal)
          element.text("new myvar",newVal);
        });


    }

    return directive;

}]);

解决方法

通过使用解决了这个问题

angular.element(element.parent()).isolateScope();

子指令可以访问父指令的范围并监视变量等.

http://plnkr.co/edit/RAO6q81ZE4tClMDMiLFb?p=preview

猜你在找的Angularjs相关文章