假设我这样做:
sAngular.app.directive('dostuff', ['$compile', function($compile){
return {
restrict : 'C',
scope: {
someVar : '='
},
link : function(scope, element, attrs){
element.click(function(){
//do stuff
scope.someVar = 'somethingelse';
var dropdownOutput = template();
var compiledOutput = $compile(dropdownOutput)(scope);
scope.$apply();
});
}
}
}]);
如何让这个指令的作用域继承父级作用域的变量,同时仍然拥有一个“隔离”的作用域?
例如来自Angular文档中的:
=或=attr-在本地作用域属性和通过值定义的名称的父级作用域属性之间设置双向绑定。如果未指定attr名称,则假定属性名称与本地名称相同。给定scope: {localModel:'= myAttr'},那么widget作用域属性localModel将反映父级作用域中parentModel的值。对parentModel进行的任何更改都将反映在localModel中,对localModel进行的任何更改都将反映在parentModel中。
但是,在这种情况下,由于“对localModel进行的任何更改都将反映在parentModel中”,如果我在该指令的作用域中修改一个变量,然后执行scope.apply(),那么它将相应地反映在父级作用域中,并且父模板将更新其更改。
我也尝试了将"scope:true"作为参数,但在该作用域中所做的更改以及scope.$apply()也会传播到原始作用域...
是否有一种方法可以使我复制父作用域的作用域,同时仍然不让该作用域中的变量更改传播到父作用域?
compiledOutput
在做什么还不是很清楚。 - charlietfl@
而不是=
。抱歉,我做出了更正。 - Rajkamal Subramanian