0

İç içe geçirilmiş yönergeleri transkripsiyon ile düzgün şekilde nasıl kullanacağınızı ve^açısal olarak nasıl gerektiğini anlamaya çalışıyorum. Bir iç yönergenin iç içe çocuk yönergeleri tarafından güncelleştirilen bir değişkeni olmasını istiyorum, ancak tüm çocukların bu değişkene bağlı olmasını istiyorum. Ben sorunu^zorunlu - erişim üst kapsamı olan açısal yönergeler?

JS göstermek için çok basit bir örnek yazdım

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .directive('test', test); 

    function test() { 
     var directive = { 
      bindToController: true, 
      controller: testController, 
      'controllerAs': 'testController', 
      scope: {}, 
      templateUrl: 'scripts/test/test.html', 
      transclude: true 
     }; 
     return directive; 
    } 

    function testController() { 
     var self = this; 
     self.childCount = 0; 

     self.addChild = function addChild(child) { 
      self.childCount++; 
      child.childNumber = self.childCount; 
     } 
    } 

})(); 


(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .directive('child', child); 

    function child() { 
     var directive = { 
      'scope': {}, 
      'link': link, 
      'templateUrl': 'scripts/test/child.html', 
      'transclude': true, 
      'require': '^test' 
     }; 
     return directive; 

     function link(scope, element, attrs, testController) { 
      scope.childNumber = null; 
      testController.addChild(scope); 
     } 

    } 

})(); 

Ana HTML kısmi

<test> 
    <child></child> 
    <child></child> 
    <child></child> 
</test> 

test.html

<h1>self.childCount = {{testController.childCount}}</h1> 
<div ng-transclude></div> 
çağırır

child.html kısmi

<h3>I am child {{childNumber}} out of {{testController.childCount}}</h3> 

Çıktı (ve sorunu) Gördüğünüz gibi

self.childCount = 3 
I am child 1 out of 
I am child 2 out of 
I am child 3 out of 

, child.html çıkış nasıl çıktı {{testController.childCount bilmiyor }}. Neyin yanlış gittiğine dair bir fikrin var mı?

cevap

0

Normalde controllerAs sözdizimini kullanmıyorum, ancak belki de 'scope': {}'u çocuk kapsamından çıkarmayı deneyin. Bir izolat kapsamı oluşturarak, çocuk yönergesinin ana denetleyici kapsamına erişememesi olabilir.

+0

Steve'i ne demek istediğimi anlıyorum, ancak çocuk yönergesinin bir izolatı olduğunu anlamaya çalışıyorum, böylece "X'in 1 çocuğu" ve "X'in 2 nolu çocuğu" olduklarını bilebilirler. İzole bir kapsamım yoksa, o zaman ilk değişkeni (örneğimde childNumber'i çağıracağım) üst kapsama eklenir, böylece hepsi "Ben 3'ten 3'üncü çocuğum" diyecektir – mls3590712

+0

düşüncesi, childNumber alanının, çocuk kapsamı içinde prototip olarak miras alınan bir üye olmasıydı, bu nedenle her bir çocuk kapsamının, çocuk kapsamı içinde beyan edildiği sürece kendi childNumber alanı olacaktır. Yine de yanlış olabilirim. –