2016-04-02 21 views
3

$scope Bir yönerge denetleyicisinde, yönerge ayarlarında scope: {} kullanmadan yönergeye bağlandığında.

Ancak direktifin içinde tanımlanmış bir değişken almak için scope: {}'a ihtiyacım var. Ben scope: { id: "=user" } kaldırdığınızda

<html ng-app="app"> 

<directive> 
    <child-directive user="id"> 
    {{ hello }} 
    </child-directive> 
</directive> 

</html> 

http://codepen.io/anon/pen/MyEXJV

çalışır -

var app = angular.module("app", []); 

app.directive("directive", function() { 
    return { 
    controller: function($scope){ 
     $scope.id = 5; 
    } 
    } 
}); 

app.directive("childDirective", function() { 
    return { 
    scope: { 
     id: "=user" 
    }, 
    controller: function($scope){ 
     $scope.hello = "Hello"; 
    } 
    } 
}) 

:

Bu benim test kodudur. Ama kimliği denetleyiciye iletmem gerekiyor.

Bir çözüm var mı?

Şimdiden teşekkürler.

cevap

3

Yalıtılmış bir kapsamı kullandığınızda, yalnızca yönergenin sağladığı şablonda geçerlidir. Bir dize olarak şablon sağlamak veya templateUrl

olarak bu şekilde deneyin edebilirsiniz:

<directive> 
    <child-directive user="id"></child-directive> 
</directive> 

JS

app.directive("childDirective", function() { 
    return { 
    scope: { 
     id: "=user" 
    },   
    template:'{{ hello }} ID= {{id}}', 
    controller: function($scope){ 
     $scope.hello = "Hello"; 
    } 
    } 
}) 
+0

Ben şablonu özel yapılmasını istiyor yerine eğer bir denetleyici kullanmalı mıyım? – Jacob

+0

Ne sorduğundan emin değilsin. Yönergeler – charlietfl

+0

'da "yalıtılmış alan" konusunu okuyun. Pekala! Çözümünüz çalışıyor ve cevabı kabul edildi olarak işaretleyeceğim. Direktiflerde izole edilmiş kapsamları okuyacağım. Teşekkürler – Jacob

İlgili konular