加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 16:56:58 所属栏目:安全 来源:网络整理
导读:我有两个独立的范围指令.理想情况下,我喜欢独立工作,不需要任何自定义模板.第一个指令将是页面滚动观察器,当它到达某一点时,我希望它在另一个指令中触发更新.子指令是否可以在父指令中观察变量? 我已经创建了一个简单的plunkr来说明问题,http://plnkr.co/ed
我有两个独立的范围指令.理想情况下,我喜欢独立工作,不需要任何自定义模板.第一个指令将是页面滚动观察器,当它到达某一点时,我希望它在另一个指令中触发更新.子指令是否可以在父指令中观察变量?

我已经创建了一个简单的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读