是否有办法在AngularJS指令中监视函数表达式的值?我有以下HTML和JavaScript,模板中{{editable()}}
的插值显示该值评估为true,而在Chrome中检查HTML元素显示contenteditable
为false。
关于如何监视此函数的值的任何建议,并相应地更新元素attr?还是有更好的方法来实现这一目标? (我仍然想评估该功能。)
HTML:
<h4 editable="account.hasRole('ROLE_ADMIN')" content="doc.heading"></h4>
Javascript:
mod
.directive(
'editable',
function() {
return {
restrict : 'A',
template : '<button class="btn pull-right"><i class="icon-pencil"></i></button>{{content}} ({{editable()}})',
scope : {
'content' : '=',
'editable' : '&'
},
link : function(scope, element, attrs) {
scope.$watch('editable', function(newValue) {
element.attr('contenteditable', newValue());
});
}
};
});
尝试将手表放在'editable()'
而不是'editable'
上>
说明:
之所以需要这样做,是因为'&'
指向属性表达式的动态生成的函数包装器,而不是表达式本身。这个特殊的包装函数返回account.hasRole('ROLE_ADMIN')
的值。我也希望这样做: