我有一个相当简单的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
函数中的隔离范围似乎不?
答案 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
然后您可以使用开发人员工具进行检查。