在指令中使用隔离范围但无模板创建指令时,但在指令中有一些dom,指令内的dom无法绑定到指令的范围。
<div ng-controller="testCtrl">
{{hehe}}
<hr/>
<div test-directive="hello" >
Directive Data:
<div>{{test}}</div>
</div>
</div>
angular.module('app',[])
.controller("testCtrl",['$scope', function ($scope) {
$scope.hehe = "test from controller";
}])
.directive("testDirective",function(){
return{
scope: {
"testDirective": "="
},
controller: ['$scope', function ($scope) {
$scope.test = "test from directive";
}]
};
});
在演示中,有两个有角度的lib版本,1.1.5和1.2.4,其中一个被评论。
代码适用于1.1.5但不适用于1.2.4。
有人可以解释发生了什么吗?
答案 0 :(得分:1)
这是1.2.x的变化。隔离范围是真正隔离的,您只能通过内部指令(通过template:
或templateUrl:
定义)与模板绑定。
HTML中的模板永远不会继承指令的范围。
隔离范围的目的是将指令的内部实现与外部模板隔离开来。旧的行为并没有完全隔离指令,使事情更加紧密。
除非您在指令中使用内部模板,否则不建议使用隔离范围。不使用template:
或templateUrl:
时,您应该只使用scope: true
或根本不使用范围。