今天学习指令,遇到了一些困惑:
Inside p Two : {{aThirdProperty}}
Inside p Three: {{aThirdProperty}}
Inside p Four: {{aThirdProperty}}
OutSide myDirective: {{myProperty}}
Inside myDirective : {{myProperty}}
js
var app = angular.module('app', []);
app.controller('someCtrl', ['$scope', function($scope){
}])
app.controller('secondCtrl', ['$scope', function($scope){
console.log($scope.myProperty) //undefined
}])
app.directive('myDirective',function(){
return {
restrict :'A',
scope:false
}
})
为什么打印出来的是undefined?
然后把js指令里的scope改为scope:{};为什么弹出来的是这个?就是说为什么外面的OutSide myDirective: wow! that is cool会有值?
Inside p Two :
Inside p Three: data for 3rd property
Inside p Four: data for 3rd property
OutSide myDirective: wow! that is cool
Inside myDirective : wow! that is cool
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
首先,你写的这个跟指令没多大关系。指令的
scope是影响它的template的作用域,这里并不是。这里undefined的原因是因为controller在ng-init之前执行了。可以用用延时或者
$watch监听嗯,,,上面那个undefined我懂了,,不过后面那个我还是有点疑惑,,就是说当
scope:{}时,Inside myDirective : {{myProperty}}这个表达式还是属于外面那个作用域是不是?而此时template里面并没有设定,,,所以隔离作用域就没有起作用,我这样理解对吗?还有一个问题,既然这样,,,那为什么如果把scope设定为
scope:true是下面这样的结果:能否再指点一下,,,谢谢~~
scope true就是独立隔离的作用域
{}的话只有{}内部有的属性会被隔离开来