SORU
18 NİSAN 2013, PERŞEMBE


AngularJS bir kontrol çevrimi nedir?

Birisi AngularJS denetleyicisi ömrü ne açıklayabilir?

  • Bir tek denetleyici, isteğe bağlı yok oluşturulur?
  • İkincisi ise, yaratılış denetleyicisi imha / ne tetikler?

Aşağıdaki örnek göz önünde bulundurun:

var demoApp = angular.module('demo')
  .config(function($routeProvider, $locationProvider) {
    $routeProvider
      .when('/home', {templateUrl: '/home.html', controller: 'HomeCtrl'})
      .when('/users',{templateUrl: '/users.html', controller: 'UsersCtrl'})
      .when('/users/:userId', {templateUrl: '/userEditor.html', controller: 'UserEditorCtrl'});
  });

demoApp.controller('UserEditorCtrl', function($scope, $routeParams, UserResource) {
  $scope.user = UserResource.get({id: $routeParams.userId});
});

örneğin:

Ben gidin yukarıdaki örnekte, /users/1kullanıcı 1 yüklü ve $scope olarak ayarlanmıştır.

Ben gidin o zaman, /users/2 kullanıcı 2 yüklenir. UserEditorCtrl aynı örneği yeniden, ya da yeni bir örneği oluşturulur.

  • Eğer yeni bir örneği ise, ilk örneği yıkımı tetikleyen şey nedir?
  • Eğer tekrar olursa, nasıl oluyor bu iş? (örn., kontrolör veri oluşturma üzerinde çalışıyor görünüyor, yük yöntemi)

CEVAP
19 NİSAN 2013, Cuma


Aslında soru ngView kumanda için yaşam döngüsü budur.

Denetleyicileri değil tekiz. Herkes yeni bir denetleyicisi oluşturmak ve asla otomatik yok. Aslında, genellikle, temel kapsamı yaşam döngüsüne bağlı olmasıdır. Denetleyici kapsamı yok olduğunda otomatik olarak yok edilir. Ancak, temel bir kapsam yok ettikten sonra, kendi kumanda işe yaramaz (en azından, tasarım, olmalıdır).

Özel sorunuza cevap, ngView bir yönerge (ngController Direktif) her zaman 16 ** bir gezinti olur her zaman. Ve last scope is going to be destroyed de.

Yaşam döngüsü "olaylar" oldukça basit. Senin< . "" . yaratılış olay ^güçlü kumandanız kendi inşaat. Sadece bir kaç kod. İşe yaramaz bir durum olduğunda haber için< . "" . yıkım olayı ^güçlü ), kapsam $destroy olay dinle:

$scope.$on('$destroy', function iVeBeenDismissed() {
  // say goodbye to your controller here
  // release resources, cancel request...
})

ngView özellikle, içerik kapsamı olay $viewContentLoaded hazır olduğunda haber edebiliyoruz:

$scope.$on('$viewContentLoaded', function readyToTrick() {
  // say hello to your new content here
  // BUT NEVER TOUCHES THE DOM FROM A CONTROLLER
});

Kavram kanıtı (Açık Konsol Penceresi) Here is a Plunker.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Sparta Spartanutul

    Sparta Spart

    18 HAZİRAN 2013
  • TheRightTire

    TheRightTire

    14 EKİM 2009
  • williamfitzsimmons

    williamfitzs

    14 Mart 2008