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

  • Mary Jane Tauyan

    Mary Jane Ta

    20 AĞUSTOS 2009
  • Smith Micro Graphics

    Smith Micro

    15 Mayıs 2008
  • The Scary Snowman

    The Scary Sn

    1 ŞUBAT 2011