2012-10-14 11 views
6

Oto mój dyrektywy:W Angular JS, jak wprowadzić dane z atrybutu dyrektywy do szablonu?

app.directive("helloWorld", function() { 
    return { 
    restrict: "E", 
    scope: { 
     name: "bind" 
    }, 
    template: "<div>a {{name}} a</div>" 
    }; 
}); 

Oto jak go używać:

<hello-world name="John Smith"></hello-world> 

Spodziewam tę stronę tak być, gdy uruchamiam go:

<hello-world> 
    <div>a John Smith a</div> 
</hello-world> 

ale dla niektórych powód, name nie jest wstrzykiwany, a rzeczywisty wynik jest następujący:

<hello-world> 
    <div>a {{name}} a</div> 
</hello-world> 

Cokolwiek brakuje? Używam Angular JS 1.0.2

Odpowiedz

14

Deklaracja zakresu jest dziwna. Nie jestem pewien co do deklaracji "bind" - może jest to coś z poprzednich wersji.

Obecny składni dla wiązania do atrybutu dyrektywy jest tak:

return { 
    restrict: "E", 
    scope: { 
     name: "@name" 
    }, 
    template: "<div>a {{name}} a</div>" 
}; 

Ogólnie @attributeName. Zobacz tutaj dla more information on directives.

+0

Właśnie odpowiedziałem na moje własne pytanie, a następnie okazało się, że jest już odpowiedź :-) https://groups.google.com/forum/?fromgroups=#!topic/angular/tfArd7DuFxs – agibalov

+1

Proponuję dodać więcej informacji o zakresie. "@name" wiąże się z daną własnością w zakresie nadrzędnym; "= getName()" wiąże się z wartością wyrażenia kątowego "getName()" w zakresie nadrzędnym; i "& doStuff()" wiąże funkcję z zakresem, który wykonuje podane wyrażenie kątowe, gdy zostanie wywołany. – qualidafial

Powiązane problemy