SORU
18 Mayıs 2013, CUMARTESİ


Açısal: bu ya $kapsam kullanmalıyım

Erişim denetleyici fonksiyonları için kullanılan iki desenler vardır: "bu" ve "$scope". Nasıl ve ne zaman kullanmalıyım? Anladığım kadarıyla "bu" Denetleyici olarak ayarlanır ve "$kapsamı" kapsam zincirinde bir nesne görünümleri. Ama yeni "Var gibi Denetleyici" sözdizimi, kolayca kullanabilirsiniz. Ne soruyorum ne demek olduğunu ve gelecek için ne yapmalı?

Örnek:

  1. "Bu":

    function UserCtrl() {
      this.bye = function() { alert('....'); };
    }
    
    <body ng-controller='UserCtrl as uCtrl'>
      <button ng-click='uCtrl.bye()'>bye</button>
    
  2. Kullanma $scope

    function UserCtrl($scope) {
        $scope.bye = function () { alert('....'); };
    }
    
    <body ng-controller='UserCtrl'>
        <button ng-click='bye()'>bye</button>
    

Ben şahsen bu bulabilirsiniz.göze daha kolay ve daha doğal diğer Javascript OO modellerine göre adı.

Tavsiye lütfen?

CEVAP
12 Kasım 2013, Salı


Hem kendi kullanır.İlk olarak, bazı tarihi ...

kapsam "" "(kararsız görünür yaptım ama sürüm 1.2.0 itibariyle resmi olarak pre-bültenleri bundan önce) çok daha yeni. kontrol ederken" tekniği klasik $

Her ikisi de gayet iyi çalışıyor ve sadece yanlış cevap açık bir neden olmadan aynı uygulama içinde karıştırın. Açıkçası, onları karıştırma çalışacaktır, ama sadece karışıklık katacak. Yani ikisinden birini seçip onunla rulo. En önemli şey tutarlı olmaktır.

Hangisi? Bu sana bağlı. Orada çok daha fazla örnek $scope, ama" steam de alacak. "denetleyicisi vardır Biri diğerinden daha iyi mi? Bu tartışılır. Nasıl seçiyorsun?

Konfor

"Kapsam $gizleme ve aracı bir nesne üzerinden görüntülemek için kumanda üyeleri açığa sevdiğim için". Denetleyici olarak tercih ederim Bu ayar ile.*, Görünüm denetleyicisi ifşa etmek istiyorum sadece gösterebilirsiniz. $Kapsam da, ben sadece bunun için standart JavaScript kullanmayı tercih yapabilirsiniz. Aslında, ben bu gibi bir kod:

var vm = this;

vm.title = 'some title';
vm.saveData = function(){ ... } ;

return vm;

Bu bana daha temiz geliyor ve kolay görünüm için maruz ne olduğunu görmek için yapar. Ben dönmem değişken adı "viewmodel anlamına gelir." , vm dikkat edin Bu sadece benim sözleşme.

Ya da tekniği ile hesabına değer ekleme değilim o yüzden aynı şeyler yapabilirim kapsamı ile dolar.

$scope.title = 'some title';
$scope.saveData = function() { ... };

Onun için orada.

Enjeksiyon

Enjekte etmek istiyorum kapsam $$kumandaya kapsamı. Başka bir nedenle (denetleyicisi saatler uzak durmaya çalışırım ama yayın veya saatler gibi$) ihtiyacım olmasa kumanda ile bunu yapmak zorunda, bilmiyorum.

GÜNCELLEME 2 seçimler hakkında bu yazı yazdım: http://www.johnpapa.net/do-you-like-your-angular-controllers-with-or-without-sugar/

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Marques Brownlee

    Marques Brow

    21 Mart 2008
  • bored before i even began

    bored before

    30 Mart 2009
  • Thom Hall

    Thom Hall

    24 Kasım 2006