Angularjs 如何从链接函数中检查角度指令中的范围?
我有一个相当简单的Angular指令,它有自己的模板。但是,如果Angularjs 如何从链接函数中检查角度指令中的范围?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个相当简单的Angular指令,它有自己的模板。但是,如果admin===true,我想修改某些元素的某些属性,例如,使它们ui可排序 app.directive('members',function(){ return { restrict: 'A', template: '<h4>{{title}}</h4>'+ 'admin? <span>false</span>' + '<ul ng-mode
admin===true
,我想修改某些元素的某些属性,例如,使它们ui可排序
app.directive('members',function(){
return {
restrict: 'A',
template: '<h4>{{title}}</h4>'+
'admin? <span>false</span>' +
'<ul ng-model="list">' +
'<li ng-repeat="member in list">' +
' {{member.name}}' +
'</li>'+
'</ul>',
transclude:true,
scope: {title:'@',list:'=',admin:'@'},
link: function ($scope,$element,attrs) {
if ($scope.admin) {
$element.find("span").html("true");
$element.find("ul").attr("ui-sortable","");
}
}
};
})
app.directive('members',function(){
返回{
限制:“A”,
模板:“{{title}}”+
“管理员?错”+
“”+
“- ”+
“{{member.name}”+
“
”+
“
”,
是的,
作用域:{title:'@',list:'=',admin:'@'},
链接:函数($scope$element,attrs){
if($scope.admin){
$element.find(“span”).html(“true”);
$element.find(“ul”).attr(“ui可排序的”);
}
}
};
})
我使用$element.find(“span”)
只是为了测试它是否找到了它admin
被拉入元素属性的隔离范围,但它仍然没有通过
小提琴在这里:
隔离范围似乎在
链接
功能中不可用。可能是版本问题。以下内容适用于使用1.2.0版的我
link: function ($scope,$element,attrs) {
console.log($scope.admin); // gives 'true'
我发现将作用域全局公开给窗口对于调试非常有用
window.scope = scope; // or $scope from controller/run
然后,您可以使用开发人员工具对其进行检查。看起来确实如此。早期版本(不确定是哪个版本)显然在很久以后才设置“@”作用域属性。我不得不使用attrs.$observer('admin')这很奇怪。你说得对。看起来他们后来改变了链接阶段。我将切换到1.2.0I,我可以通过使用调试工具并在链接fn中放置断点来实现这一点