ng-hide и ng-show не работают только на определенной странице AngularJS

Для страницы просмотра сведений об устройстве, которую я создаю, я использовал директивы Angular ng-show и ng-hide, чтобы изменить отображение кнопок в соответствии с цветом состояния устройства. Я получаю цвет из базы данных, используя {{item.transaction_Mode}}. Кажется, что часть Angular работает, поскольку она правильно выводит «true» и «false», но когда она сочетается с ng-show, например ng-show='true', она не работает.

HTML-код :-

Часть генерации цвета -

<div  style="width: 30%; float: left">
                    <div ng-show="{{item.transaction_Mode == 'red'}}" class="col s1 m1 l1 vertical-line" style="height: 100%;width: 10px; background-color: red;float: left; " > </div>     
                    <div ng-show="{{item.transaction_Mode == 'orange'}}" class="col s1 m1 l1 vertical-line" style="height: 100%;width: 10px; background-color: orange;float: left; " > </div>     
                    <div ng-hide="{{item.transaction_Mode == 'red'}} || {{item.transaction_Mode == 'orange'}}" class="col s1 m1 l1 vertical-line" style="height: 100%;width: 10px; background-color: green;float: left; " > </div>     
                    <h1  style="text-align: left">{{devices[whichItem].name}} - [id  {{devices[whichItem].device_ID}}] </h1>
</div>

Отображение кнопок в соответствии с цветовой частью -

<div  style="width: 70%; float: left; "> 


                   <button ng-hide="{{item.transaction_Mode == 'red'}} || {{item.transaction_Mode == 'orange'}}" style="margin-top:  20px; width: 17%; float: left; height: 46px;" type="button" data-target="modal1" class="Now waves-effect waves-light btn modal-trigger" >Now</button>
                    <p style="width: 3%; float: left"> </p>
                    <button  style="margin-top:  20px; width: 17%; float: left; height: 46px;" type="button" data-target="modal2" class="Later waves-effect waves-light btn modal-trigger ">Later</button>
                    <p style="width: 3%; float: left"> </p>
                    <button ng-show="{{item.transaction_Mode == 'orange'}}" style="margin-top:  20px; width: 17%; float: left; height: 46px;" type="button" class="waves-effect waves-light btn " >Get</button>
                    <p style="width: 3%; float: left"> </p>
                    <button ng-show="{{item.transaction_Mode == 'orange'}}" style="margin-top:  20px; width: 17%; float: left; height: 46px; " type="button" data-target="modal4" class="Cancel waves-effect waves-light btn modal-trigger" >Cancel</button>
                    <p style="width: 3%; float: left"> </p>
                    <button ng-show="{{item.transaction_Mode == 'red'}}" style="margin-top:  20px; width: 17%; float: left; height: 46px; " type="button" data-target="modal3" class="Return waves-effect waves-light btn modal-trigger" >Return</button>

</div>

Но этот же код работает еще на двух страницах, и я не могу понять, почему он не работает на этой. ng-if или ng-switch-when тоже не работает. Будем признательны за любую помощь, Заранее спасибо!


person Nez    schedule 05.01.2016    source источник
comment
Вы также включили контроллер на этой странице?   -  person Nora    schedule 05.01.2016
comment
попробуйте использовать ng-if, чтобы преодолеть это.!   -  person Kunal Kakkad    schedule 05.01.2016
comment
У вас есть стиль CSS, который делает эти элементы видимыми? ngShow и ngHide используют display: none   -  person maurycy    schedule 05.01.2016
comment
Удалите фигурные скобки. Например: измените ng-show={{item.transaction_Mode == 'orange'}} на ng-show=item.transaction_Mode == 'orange'   -  person varun    schedule 05.01.2016
comment
Мой контроллер выглядит следующим образом: homeCtrls.controller('detailsCtrl', ['$scope', '$http', '$routeParams', function ($scope, $http, $routeParams) { $http.get('webapi/ устройства').success(function (data) { $scope.devices = data; $scope.whatItem = $routeParams.itemId; });   -  person Nez    schedule 06.01.2016
comment
'ng-if' тоже не работает @Kunalhttp   -  person Nez    schedule 07.01.2016


Ответы (3)


Опечатка ошибка. ng-if, ng-show не требует {{}} для привязки к данным $scope.

So,

<div  style="width: 30%; float: left">
                    <div ng-show="{{item.transaction_Mode == 'red'}}" class="col s1 m1 l1 vertical-line" style="height: 100%;width: 10px; background-color: red;float: left; " > </div>     
                    <div ng-show="{{item.transaction_Mode == 'orange'}}" class="col s1 m1 l1 vertical-line" style="height: 100%;width: 10px; background-color: orange;float: left; " > </div>     
                    <div ng-hide="{{item.transaction_Mode == 'red'}} || {{item.transaction_Mode == 'orange'}}" class="col s1 m1 l1 vertical-line" style="height: 100%;width: 10px; background-color: green;float: left; " > </div>     
                    <h1  style="text-align: left">{{devices[whichItem].name}} - [id  {{devices[whichItem].device_ID}}] </h1>
</div>


ДОЛЖНЫ БЫТЬ:

<div  style="width: 30%; float: left">
                    <div ng-show="item.transaction_Mode == 'red'" class="col s1 m1 l1 vertical-line" style="height: 100%;width: 10px; background-color: red;float: left; " > </div>     
                    <div ng-show="item.transaction_Mode == 'orange'" class="col s1 m1 l1 vertical-line" style="height: 100%;width: 10px; background-color: orange;float: left; " > </div>     
                    <div ng-hide="item.transaction_Mode == 'red' || item.transaction_Mode == 'orange'" class="col s1 m1 l1 vertical-line" style="height: 100%;width: 10px; background-color: green;float: left; " > </div>     
                    <h1  style="text-align: left">{{devices[whichItem].name}} - [id  {{devices[whichItem].device_ID}}] </h1>
</div>
person Ved    schedule 05.01.2016
comment
Эй, спасибо, но это не решает мою проблему. Я использовал {{ }}, потому что я определил переменный элемент и получил transaction_Mode (цвет), относящийся к каждому элементу, из внешнего интерфейса, поэтому я могу использовать его напрямую. Выражение Angular выводит правильный ответ как «истина» или «ложь», но когда оно приходит с ng-show/ng-hide, оно не работает. - person Nez; 06.01.2016

Вместо:

ng-show="{{item.transaction_Mode == 'orange'}}"

Использовать:

ng-show="item.transaction_Mode == 'orange'"
person Iamisti    schedule 05.01.2016
comment
Эй, спасибо, но это не решает мою проблему. Я использовал {{ }}, потому что я определил переменный элемент и получил transaction_Mode (цвет), относящийся к каждому элементу, из внешнего интерфейса, поэтому я могу использовать его напрямую. Выражение Angular выводит правильный ответ как «истина» или «ложь», но когда оно приходит с ng-show/ng-hide, оно не работает. - person Nez; 06.01.2016

Директивы AngularJs, такие как ng-show или ng-hide, не требуют использования {{}}.

person Emmanuel Dieval    schedule 05.01.2016
comment
Эй, спасибо, но это не решает мою проблему. Я использовал {{ }}, потому что я определил переменный элемент и получил transaction_Mode (цвет), относящийся к каждому элементу, из внешнего интерфейса, поэтому я могу использовать его напрямую. Выражение Angular выводит правильный ответ как «истина» или «ложь», но когда оно приходит с ng-show/ng-hide, оно не работает. - person Nez; 06.01.2016