SORU
23 Mayıs 2013, PERŞEMBE


AngularJS. Nasıl kontrol bileşeni dışından kumanda işlevini çağırmak için

Fonksiyonu kumanda altında tanımlanmış web sayfasının herhangi bir yerde (kontrol bileşeni dışında) gelen aramayı nasıl yapabilirim?

"Al" düğmesine basın. basın çok iyi çalışıyor Ama div denetleyicisi dışından onu aramam gerek. Benim div gizlidir varsayılan olarak. mantığı şudur: Bir yere navigasyon menüsünde düğmesine basın ve göstermelidir () "fonksiyonu. div yürütmek Nasıl elde edebilirim?

Benim web sayfası:

<div ng-controller="MyController">
  <input type="text" ng-model="data.firstname" required>
  <input type='text' ng-model="data.lastname" required>

  <form ng-submit="update()"><input type="submit" value="update"></form>
  <form ng-submit="get()"><input type="submit" value="get"></form>
</div>

Benim js:

function MyController($scope) {
  // default data and structure
  $scope.data = {
    "firstname" : "Nicolas",
    "lastname" : "Cage"
  };

  $scope.get = function() {
    $.ajax({
       url: "/php/get_data.php?",
       type: "POST",
       timeout: 10000, // 10 seconds for getting result, otherwise error.
       error:function() { alert("Temporary error. Please try again...");},
       complete: function(){ $.unblockUI();},
       beforeSend: function(){ $.blockUI()},
       success: function(data){
        json_answer = eval('('   data   ')');
        if (json_answer){
            $scope.$apply(function () {
              $scope.data = json_answer;
        });
        }
    }
});

};

  $scope.update = function() {
$.ajax({
    url: "/php/update_data.php?",
    type: "POST",
    data: $scope.data,
    timeout: 10000, // 10 seconds for getting result, otherwise error.
    error:function() { alert("Temporary error. Please try again...");},
    complete: function(){ $.unblockUI();},
    beforeSend: function(){ $.blockUI()},
    success: function(data){ }
  });
};

}

CEVAP
24 Mayıs 2013, Cuma


Burada dışarıdan kumanda işlevi çağırmak için bir yol

angular.element(document.getElementById('yourControllerElementID')).scope().get();

get() denetleyici bir işlevi olduğu.

Geçiş yapabilirsiniz

document.getElementById('yourControllerElementID')` 

için

$('#yourControllerElementID')

JQuery kullanıyorsanız.

Ayrıca Eğer fonksiyonu eğer Görünümü değişen bir şey demektir, aramalısın

angular.element(document.getElementById('yourControllerElementID')).scope().$apply();

değişiklikleri uygulamak için.

Not gereken bir diğer şey, kapsamları sayfa yüklendikten sonra başlatılır, kapsam dışından yöntemleri çağırmak her zaman sayfa yüklendikten sonra yapılmalıdır. Başka kapsamına hiç almazsınız.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MrMimoB

    MrMimoB

    11 NİSAN 2011
  • theavettbrothers

    theavettbrot

    9 ŞUBAT 2007
  • Tracy Hairston

    Tracy Hairst

    22 Mayıs 2009