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

angularjs – 绑定到原型继承范围内的属性

发布时间:2020-12-17 18:08:00 所属栏目:安全 来源:网络整理
导读:我想创建一个带有原型继承范围的指令(即scope = true),还要设置范围绑定到属性,类似于设置隔离范围时的跟随: scope = {'varname':'=attrname'} 我目前的解决方案是设置scope = true并设置绑定到链接函数中以下行的属性: scope.$watch(element.attr(‘attrn
我想创建一个带有原型继承范围的指令(即scope = true),还要设置范围绑定到属性,类似于设置隔离范围时的跟随:

scope = {
'varname':'=attrname'
}

我目前的解决方案是设置scope = true并设置绑定到链接函数中以下行的属性:

scope.$watch(element.attr(‘attrname’),function(val) { scope.varname =
val; }); // watch changes scope.varname =
scope.$eval(element.attr(‘attrname’)); // initialize

虽然这样做但它看起来并不是很优雅.你建议采用什么方法?

我发现令人惊讶的是,angularjs似乎期望在一个指令中你在设置一个新的继承范围时不需要属性绑定.

解决方法

我知道你的意思,我同意你的意见.如果Angular为指令设置一个方便的框架来设置父作用域变量和子作用域变量之间的双向模型绑定并且仍然支持原型作用域继承,那将是很好的.

为了达到与以下隔离范围相同的效果:

scope = {'varname':'=attrname'}

您可以在指令的链接函数中设置双向模型绑定:

scope: true,link:  function(scope,element,attr) {
     // when attrname changes in parent scope,update varname in current scope
     scope.$parent.$watch(attr.attrname,function(newVal) {
          scope.varname = newVal;
     });

     // when varname changes in current scope,update attrname in parent scope
     scope.$watch('varname',function(newVal) { 
          scope.$parent[attr.attrname] = newVal;
     });
}

(编辑:李大同)

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

    推荐文章
      热点阅读