javascript - angularjs 独立作用域问题
本文介绍了javascript - angularjs 独立作用域问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
为什么MainController控制器可以获得内部指令的{{myProperty}值
<body ng-app="MyApp">
<div ng-controller="MainController">
Outsid myDirective:{{myProperty}}
<div my-directive ng-init="myProperty='wow,this is cool'">
Inside myDirective:{{myProperty}}
</div>
</div>
<script>
var app=angular.module("MyApp",[]);
app.controller("MainController",function ($scope){
});
app.directive("myDirective",function (){
return {
replace:true,
restrict:"A",
scope:{},
priority:100,
template:"<div> Inside myDirective {{myProperty}}</div>"
}
})
</script>
</body>
解决方案
你上面的指令里scope:{}这里隔绝了作用域是获取不到myProperty ,这里获取的myProperty 并不是指令里面的那个。所以下面一行并没有输出出来,之所以 Outsid myDirective:{{myProperty}} 能输出,是因为ngInit指令的原因。上面的代码中。ngInit指令会以非零的优先级运行,也就是说上面的代码中会先运行ngInit指令然后才是我们定义的指令。所以这里的myProperty 是全局$scope里的对象。而并非指令里的对象。 不知道我这样说你明白了没有。
http://jsbin.com/OxAlek/1/edit 这里有个例子你可以对比着来看就明白了。
这篇关于javascript - angularjs 独立作用域问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文