2017-12-30 7 views
0

Bitte beziehen Sie sich auf Plunker. Das Problem: Wenn ich die item-over-Direktive innerhalb des Hauptcontrollers verwende, löst dies einen feinen OnOver aus. Dies funktioniert OK:Angularjs verschachtelte Direktive scopes

<a href="#" ng-repeat="item in main.Data" item-over="main.OnOver(item)">{{item.Name}}</a> 

Aber wenn ich es in Listenansicht Richtlinie setzte es nicht auslösen die OnOver Methode der Steuerung. Das funktioniert nicht:

<list-view itemssource="main.Data"> 
    <a href="#" item-over="main.OnOver(item)">{{item.Name}}</a> 
</list-view> 

Was mache ich falsch?

+0

zeigen Sie Ihre Richtlinie Codes – madhur

+0

Es ist in Plunker https://plnkr.co/edit/uc8SYR0hfayz4lqnyxlD – Derick

Antwort

1

Das Problem besteht darin, dass die ListView-Direktive einen isolierten Bereich erstellt, so dass Sie nicht auf den Hauptbereich oder das Element innerhalb des Bereichs dieser Direktive zugreifen können. Auch onOver wäre nicht zugänglich, weil es zum übergeordneten Bereich gehört,

Wenn Sie nicht besonders zwei-Wege-Bindung für itemSource in der Listview-Direktive benötigen, dann erben Sie den übergeordneten Bereich der Richtlinie, indem Sie scope: true in Return-Anweisung setzen.

Verwendung attr in Ihrer Richtlinie isoliert attr Wert zuzugreifen, ohne die Schaffung Scope-

return { 
    link:function (scope, element, attrs) { 
     scope.itemsSource = attrs.itemsSource 
    } 
} 

Sie die Itemssource gleiche Art und Weise passieren -

<list-view items-source="main.Data">

Jetzt haben Sie die Werte in der Richtlinie Umfang und Sie können mit ihnen spielen.

OR, da Sie den übergeordneten Bereich sind inherting können Sie direkt den Wert Elternteil mit $ - Deutsche in Ihrer Richtlinie:

link: function (scope, element) { 
    scope.itemsSource = scope.$parent.itemsSource 
} 

Beim Einchecken plunkr es einige weitere Probleme gab, lesen Sie in diesem Arbeitsbeispiel für Ihre plunkr - working plunkr

+0

ich für Itemssource nicht brauchen 2-Wege-Bindung ... aber wenn i Rahmen gesetzt: true in Listview-Richtlinie, wie dann i verweist auf itemssource in der Link-Funktion der listView-Anweisung? Und dann, wie sollte ich in der Vorlage der ListView-Anweisung an itemsource binden? – Derick

+0

Ich habe eine Antwort aktualisiert, die zeigt, wie man Attribute verwendet, ohne einen isolierten Bereich zu erstellen – madhur

+0

Danke! Es klappt! Akzeptiert – Derick