2013-09-21 16 views
13

Yönergemimin oluşturduğu kapsamda bazı veriler koymaya çalışıyorum. İşte benim jsFiddle. Benim kodunda yanlış bir şey var mıangularjs denetleyici çalışmıyor?

Aşağıdaki kod iyi

.directive('directive1', function() { 
    return: { 
     scope: true, 
     controller: function ($scope) { 
      $scope.name = 'world'; 
     } 
    } 
}) 

<div directive1> 
    <p>{{ name }}</p> 
</div> 

çalışır ancak bu kod

.directive('directive2', function() { 
    return: { 
     scope: true, 
     controller: function() { 
      this.name = 'world'; 
     }, 
     controllerAs: 'testCtrl' 
    } 
}) 

<div directive2> 
    <p>{{ testCtrl.name }}</p> 
</div> 

çalışmaz? veya controllerAs ile ilgili bir şeyi yanlış anladım mı?

+0

Bunu yapıp yapamayacağınızı bilmiyorum. '$ Scope' olmadan denetleyiciyi tanımladınız. ControllerAs nedir? –

+1

@MaximShoustin [angular1.2 docs] (http://docs.angularjs.org/guide/directive), yönerge için yeni bir özellik – user2331095

+1

Bilmekte fayda var :) –

cevap

16

Denetleyici was added in 1.2.0 yönergeleri için destek sağlar, dolayısıyla en son sürümü, bağlantılı fiddle'dan 1.0.2 yerine kullanmanız gerekir. This way istediğin gibi çalışıyor.

+0

Haklısınız. Açısal 1.2'ye geçtikten sonra iyi çalışır. teşekkürler ~! – user2331095

-1

Lütfen direktif kontrol ünitesi ve normal kontrol ünitesi ile karıştırmayın! Evet, bir yönlendirici, bir şeyi kontrol eden bir denetleyiciye sahip olabilir. Ama normal bir kontrolöre eşdeğer değil! Yönlendirme mantığını yönerge denetleyicisine koymak aslında bir sorun değildir, ancak yönerge denetleyicisi aslında doğrudan yönlendirme iletişimi için kullanılmaktadır. Bir direktifin denetleyici örneği, aynı eleman (veya çocuk öğeler) üzerinde yer alan başka bir direktife enjekte edilebilir.

"Denetleyici olarak" ifadesi normal denetleyiciler içindir. Yani sadece kendinize bir iyilik yapın ve mantığınızı direktifler bağlantı fonksiyonuna getirin.

+0

Denetleyici detayı için teşekkürler! Aslında normal bir denetleyici ve yönerge denetleyicisi ile kafa karıştırıcıyım. Tekrar teşekkürler! – user2331095

+13

Bu cevap yanıltıcıdır - bir yönerge denetleyicisi **, normal denetleyici ile aynıdır; bunun yerine, ngController yönergesinin başlatılması yerine, ilişkilendirdiğiniz yönerge ile eşleştirilmesi dışında. Sadece aynı, enjektabl, 'controllerAs', her şey çalışır. Mantık bir yönerge denetleyicisine gidebilir/olmalıdır - bağlantı işlevi öncelikle DOM manipülasyonu için kullanılmalıdır. –

İlgili konular