表示するのと同じように、コントローラーから非表示/表示機能を直接制御できるはずです。以下は、ボタンを使用して非表示の切り替えをトリガーする実際の例です。
<!DOCTYPE html>
<html>
<head>
<script data-require="angular.js@1.1.5" data-semver="1.1.5" src="http://code.angularjs.org/1.1.5/angular.min.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-app="myapp" ng-controller="mycontroller">
<span ng-hide="hideSpan">Some Content to hide</span>
<button ng-click="toggleHide()"/>Toggle Hide</button>
</body>
</html>
そしてスクリプト。
angular.module('myapp', []).controller('mycontroller', function($scope){
$scope.hideSpan = true;
$scope.toggleHide = function(){
if($scope.hideSpan === true){
$scope.hideSpan = false;
}
else{
$scope.hideSpan = true;
}
}
});
http://plnkr.co/edit/50SYs0Nys7TWmJS2hUBt?p=previewでこれを実際に表示するための単純なプランカーを作成しました。
$apply がエラーを引き起こしている理由については、($scopeProvider によって提供される) 直接スコープの変数操作が既に変更を監視しており、コア angular のデフォルトの適用にラップされているため、これは予期されることです。その変数の他のバインディングに自動的に適用されます。