2015-03-16 5 views
13

herkes http çağrı başarısına çapa etiketi devre dışı bırakma bana yardım yanılma onu etkinleştirmeniz ve tersihttp çağrı başarısına çapa etiketlerini devre dışı bırakma

Bu benim Html sayfası Can

<a href="#" id="register_pointer" data-toggle="modal" data-target="#myModal1"> 
    <div class="plus"> 
     <i class="fa fa-2x fa-plus"></i> 
    </div> 
    <div class="register"> 
     <h4>Create</h4> 
     <p>New Account</p> 
    </div> 
</a> 

Bu

$scope.MqUser=[]; 
$scope.getMqUser = function() { 
    usSpinnerService.spin('spinner-1'); 
    MQDetailsService.getUserDetails().success(function(data, status) { 
     console.log(data); 
     usSpinnerService.stop('spinner-1'); 
     $scope.createQ = false; 
     $scope.MqUser = data; 
     console.log("Success in getting the user list"); 
     console.log($scope.MqUser); 
     //I want the anchor tag to get disabled here using angular directive. 
    }).error(function(data,status){ 
     //I want the anchor tag to get enabled here using angular directive. 
     $scope.createQ = true; 
     console.log(data); 
     if(status == 0){ 
      $scope.networkError(); 
     } 
     else{ 
      $scope.fetchuserFail(data.message); 
     } 
     usSpinnerService.stop('spinner-1'); 
     console.log("Failed to load the user list "+status); 
    }) 
} 
$scope.getMqUser(); 

cevap

7

saf angularjs çözüm

benim denetleyicisi olan senin success Geri arama durumunda

sizin error Geri arama durumunda
.success(function(data){ 

    $scope.disableAnchor = true; 

}) 

.error(function(data){ 

    $scope.disableAnchor = false; 

}) 

Kişisel bağlantı etiketi controller içerisinde Sonra

<a ng-click='clickAnchor($event)' href="#your_href"> <a/> 

$scope.clickAnchor = function($event){ 

    if ($scope.disableAnchor) 
     $event.preventDefault() 

} 

Ben Saf angularjs çözüm kullanmanızı öneririz error callback'inde

.error(function(data){ 

    $("#your_anchor").on('click',function(e){ 
    }) 

}) 

içinde success callback'inde

.success(function(data){ 

    $("#your_anchor").on('click',function(e){ 
     e.preventDefault(); 
     return false 
    }) 

}) 

A olmayan saf angularjs çözüm

.

+0

Bu işlem çalışırken, saf bir AngularJS çözümü değildir. JQuery kullanamayacak birini biliyor musun? –

+0

@KirillSlatin bunu güncelledi. – levi

+0

güzel! Güncelleme için teşekkürler. Dürüst olmak gerekirse ... –

1

Bağlantı etiketini etkinleştirmek ve devre dışı bırakmak için data-href'i kullanabilirsiniz. Lütfen verilen koda bakın, Umarım size yardımcı olur.

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> 
     <input type=checkbox onclick="enableEdit(this)"/> 
     <div onclick="enable()">Enable</div> 
     <div onclick="disable()">Disable</div> 

     <a id="anc" data-href="call.html" href="#">click here</a> 

     <script type="text/javascript"> 
      function enable() { 
       $('#anc').attr("href", $('#anc').data("href")); 
      } 

      function disable() { 
       $('#anc').attr("href", "#"); 
      } 
     </script> 
+0

yup jQuery kullanarak yaptım .... Ama bunu açısal yönerge kullanarak yapmalıyım.Ajax Başarı çağrısı çapa etiketini devre dışı bırakılacak ve hata durumunda etkin olmalıdır –

+0

bana örnek kodunu verebilir misin çalışma kodu – luckwithu

4

kullanmakta geri başarı çağrısında tıklama işleyicisi kurtarabilir miyim jQuery

.success(function(data){ 

$("#register_pointer").unbind("click") // unbind the click 
$("#register_pointer").css('pointer-events', 'none'); //this will also prevent all the events like hover,mouse over etc. 
}); 

fikirde olan (

$("#register_pointer").bind("click"); 
$("#register_pointer").css('pointer-events', ''); 
+0

güzel bir çözüm. Ancak, işaretçi olayları IE'de desteklenmez <= 9 –

+0

@VinayK evet işaretçi olayları IE <= 9'da desteklenmez ve anchor öğesinin bulunduğu ana bileşenlerde olayların tetiklenmesine izin vermeye devam eder. –

1

Benim düşünceme aşağıda verildiği gibi istediğiniz zaman onları geri alabilirsiniz Spesifikasyonlara göre - discussion), bu tam amaç için ng-disabled yönergesinin yaratılmış olmasıdır. işaretçi-olaylar IE < 11 desteklenmez ise, hala IE Ayrıca çünkü çalıştığını

a[disabled] { 
    pointer-events:none; 
} 

Example here

Not: devre dışı nitelik çapa elemanları üzerinde hiçbir etkisi yoktur olduğundan, bunu düzeltmek için benim işim Anchor'larda devre dışı bırakılmış özniteliği hatalı olarak kabul eder. Diğer tarayıcı desteği pretty good.