为什么MainController控制器可以获得内部指令的{{myProperty}值

<body ng-app="MyApp">
<p ng-controller="MainController">
Outsid myDirective:{{myProperty}}
<p my-directive ng-init="myProperty='wow,this is cool'">
Inside myDirective:{{myProperty}}
</p>
</p>
<script>
var app=angular.module("MyApp",[]);
app.controller("MainController",function ($scope){
});
app.directive("myDirective",function (){
return {
replace:true,
restrict:"A",
scope:{},
priority:100,
template:"<p> Inside myDirective {{myProperty}}</p>"
}
})
</script>
</body>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你上面的指令里scope:{}这里隔绝了作用域是获取不到myProperty ,这里获取的myProperty 并不是指令里面的那个。所以下面一行并没有输出出来,之所以 Outsid myDirective:{{myProperty}} 能输出,是因为ngInit指令的原因。上面的代码中。ngInit指令会以非零的优先级运行,也就是说上面的代码中会先运行ngInit指令然后才是我们定义的指令。所以这里的myProperty 是全局$scope里的对象。而并非指令里的对象。 不知道我这样说你明白了没有。
http://jsbin.com/OxAlek/1/edit 这里有个例子你可以对比着来看就明白了。
js原型继承 该directive继承于MainCtrl 如果该directive独立作用域中找不到那个属性 就会继续往上一级查找
指令中scope:{} 这样写是创建了新的作用域,与外部的controller 隔离,做到复用。
MainController控制器 并没有获得 内部指令的{{myProperty}}值,并且 你指令中,并没有给{{myProperty}}赋值。。
感觉提问题者,提的很混乱,对着文档把dome 多敲两遍,就好了