比方說,我有一個幾個元素是這樣的:如何從控制器內添加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