比方说,我有一个几个元素是这样的:如何从控制器内添加ng显示功能?
<note ng-show="hasText()">
{{text}}
</note>
而且我有一个这样的指令:
directive('note', function() {
return {
restrict: 'E',
controller: 'NoteCtrl'
}
})
和控制器这样的:
function NoteCtrl($scope, $element) {
$scope.text = "Hello, world!";
$scope.hasText = function() {
return $scope.text.length > 0;
}
}
这是什么意志如果有文本,则显示该注释,否则将其隐藏。
我想知道的是,有没有办法从HTML中删除ng-show
,并从控制器内动态添加它?
例如,你可以尝试把这项工作作为第一行NoteCtrl
做到这一点,但它不工作:
$($element).attr('ng-show', 'hasText()');
此控制器在指令范围内吗?因为否则你做错了什么:在AngularJS中,所有的视觉行为都应该是HTML格式的,并且只能在控制器上进行数据操作。 –
我不知道你的意思。是的,控制器在指令中指定。你可以在代码中看到。 – cilphex