@H_502_6@
我想创建一个带有原型继承范围的指令(即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; }); }