Angularjs 如何从链接函数中检查角度指令中的范围?

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

我有一个相当简单的Angular指令,它有自己的模板。但是,如果
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中放置断点来实现这一点