2016-04-13 17 views
0

HTML'mde açısal/gizem kullanarak sakladığım/gösterdiğim bir div var, ancak denetleyicide gizlenip gizlenmediğini nasıl kontrol edeceğimi bilmek istiyorum.Denetleyiciden div'in AngularJS'de gizlenip gizlenmediğini kontrol edin.

Şimdiye kadar bulduğum her türlü çözüm jQuery, ng-hide öğesini bulmak için 'hasClass' kullanılarak hazırlanmıştır, ancak jQuery kullanmak istemiyorum.

Benim div benim denetleyicisinden düşünce bu

<div class="item item-input" ng-show="showDetails"></div> 

<button class="button button-block button-light leftTextButton" 
ng-click="showDetails = ! showDetails; updateTimes()"> 
<i ng-class="{'icon icon ion-minus-round': showDetails, 
'icon icon ion-plus-round': !showDetails}"></i> End Time</button> 

Sadece diyebiliriz benziyor ($ scope.showDetails) ve bu doğru veya yanlış dönecekti ama tanımsız ise.

Denetleyiciden gizlendiyse veya gösteriliyorsa nasıl bir div olup olmadığını nasıl kontrol edebilirim? Teşekkürler

+1

kullandığınız açısal sürümü nedir? Örneğiniz benim için iyi çalışıyor: http://jsfiddle.net/so6ouj9d/ – Ronnie

+0

hmm, bir şey kesinlikle benim kapsamımla yanlıştır. "$ Scope.showDetails", updateTimes dışındaki işlevlerde kullanılabilir mi? Yoksa sadece ng tıklama ile belirttiğiniz işlevler kullanılabilir mi? – user1180888

+1

Düğmenizi ilk kez tıkladığınızda tanımlanamayacak, çünkü bu değeri ayarladığınız yerdir. Kontrol cihazınızdaki değeri önceden tanımlayabilir ve daha sonra tanımsız olmayacaktır. 'Ng-show' başlangıçta çalışır çünkü showDetails 'undefined ile eşit olmadığı için gösterilmez. – Ronnie

cevap

1

Sanırım bir kapsam belirleme sorununuz var. Bunu kontrol edecek işleve aktarmak en iyi bahistir. Aksi takdirde, kapsam, denetleyiciye erişebilmelidir.

angular.module('MyApp', []) 
 
    .controller('MyController', ['$scope', 
 
    function($scope) { 
 
     $scope.myBoolean = false; 
 

 
     $scope.checkMyBooleanOnScope = function() { 
 
     alert($scope.myBoolean); 
 
     }; 
 

 
     $scope.checkMyOtherBooleanOnScope = function() { 
 
     alert($scope.myOtherBoolean); 
 
     }; 
 

 
     $scope.checkBooleanByPassingIt = function(bool) { 
 
     alert(bool); 
 
     }; 
 
    } 
 
    ]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="MyApp" ng-controller="MyController"> 
 
    <p>myBoolean predefined in the controller:{{myBoolean}} 
 
    <input type="checkbox" ng-model="myBoolean" /> 
 
    </p> 
 
    <p> 
 
    <button ng-click="checkMyBooleanOnScope()">checkMyOtherBooleanOnScope</button> 
 
    <button ng-click="checkBooleanByPassingIt(myBoolean)">checkMyBooleanByPassingIt</button> 
 

 
    </p> 
 
    <p>myOtherBoolean defined on the page with ng-model:{{myOtherBoolean}} 
 
    <input type="checkbox" ng-model="myOtherBoolean" /> 
 
    </p> 
 
    <p> 
 
    <button ng-click="checkMyOtherBooleanOnScope()">checkMyBooleanOnScope</button> 
 
    <button ng-click="checkBooleanByPassingIt(myOtherBoolean)">checkMyOtherBooleanByPassingIt</button> 
 
    </p> 
 

 
</div>

+0

Haklısınız, bir şey benim sorunumda yanlış, ama ne olduğunu göremiyorum. Kapsam değişkenini kontrol etmek ve değiştirmek için ng tıklama işlevine eklenmesi işe yarıyor gibi görünüyor. Çok hantal görünüyor, ama işi bitirir. Cevabınız için teşekkürler. – user1180888