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

时间:2013-09-25 08:08:49

标签: angularjs angularjs-directive

我有一个相当简单的Angular指令,它有自己的模板。但是,如果admin === true,我想修改某些元素的某些属性,例如使他们ui-sortable

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","");
  }
    }

};
})

我使用$element.find("span")来测试它是否找到它。 admin从元素的属性中被拉入隔离范围,但它仍然无法通过。

小提琴在这里:http://jsfiddle.net/zqM4Z/4/

link函数中的隔离范围似乎

2 个答案:

答案 0 :(得分:2)

可能是版本问题。以下适用于我使用版本1.2.0

link: function ($scope,$element,attrs) {
    console.log($scope.admin); // gives 'true'

答案 1 :(得分:0)

我发现它对调试目的非常有用,可以将范围全局公开到窗口。

window.scope = scope; // or $scope from controller/run

然后您可以使用开发人员工具进行检查。