0

我有一个相当简单的 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")just 来测试它是否找到它。admin从元素的属性中被拉到隔离范围内,但它仍然没有通过。

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

似乎隔离范围在函数中不可link用?

4

2 回答 2

2

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

link: function ($scope,$element,attrs) {
    console.log($scope.admin); // gives 'true'
于 2013-09-25T08:13:33.317 回答
0

我发现它对于调试目的非常有用,可以将全局范围暴露给窗口。

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

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

于 2013-09-25T08:22:45.010 回答