Нг-скрыть не работает

Я новичок в angularjs. Когда я нажимаю "Click Me", toggle метод называется. Значение test меняется с ложного на истинное, но ng-hide не признает новую ценность test,

<div ng-app="myApp" ng-controller="myCtrl">
<table>
 <tr>
  <td><span ng-hide="{{test}}">Testing</**strong text**td>
  <td><span>hello</span></td>
 </tr>
 <tr>
  <td style="cursor:pointer"><span ng-click="toggle()">Click Me</td>
  <td><span>hello</span></td>
 </tr>
</table>
</div>

script.js

var appX = angular.module('myApp', []);
appX.controller('myCtrl', function($scope){
   $scope.test = false;
   $scope.toggle = function(){
     $scope.test = true;
     console.log("toggle is working");
   };
});

5 ответов

Тест не является выражением, поэтому удалите фигурные скобки,

 <td><span ng-hide="test">Testing</**strong text**td>

Это синтаксическая ошибка. Вы комбинируете как привязку выражений, так и привязку директив. Ниже код должен работать.

замещать ng-hide="{{test}} с ng-hide-"test"

Вам не нужно говорить, что вы пишете угловой код внутри ng-hide поскольку это уже угловая директива, она будет изменяться test сама переменная, так что не нужно указывать там скобки.

Просто попробуйте как: ng-hide="test"

Директива ngHide показывает или скрывает данный элемент HTML на основе выражения, предоставленного атрибуту ngHide.

Так как он принимает выражение, поэтому нет необходимости в фигурных скобках!

Изменить:

ng-hide="{{test}}"

в

ng-hide="test"

Вы должны использовать фигурные скобки, если директива ожидала string вместо expression в качестве значения атрибута.

Для получения дополнительной информации см. Angular Docs.

Some code changes:

  • Вы забыли закрыть </span>

    <span ng-hide="test">Testing</span>
    
  • Удалить **strong text** from the closing </td> элемент.

    <td><span ng-hide="test">Testing</span></td>
    
  • Задница, предложенная Sajeetharan, test это не выражение, поэтому удалите фигурные скобки.

    <td><span ng-hide="test">Testing</span></td>
    

Рабочая демонстрация:

var myApp = angular.module('myApp',[]);

myApp.controller('MyCtrl', function($scope) {
    $scope.test = false;
   $scope.toggle = function(){
     $scope.test = true;
     console.log("toggle is working");
   };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="MyCtrl">
  <table>
 <tr>
 <td><span ng-hide="test">Testing</span></td>
  <td><span>hello</span></td>
 </tr>
 <tr>
 <td style="cursor:pointer"><span ng-click="toggle()">Click Me</span></td>
  <td><span>hello</span></td>
 </tr>
</table>
</div>

Другие вопросы по тегам