2016-04-05 4 views
0

Manchmal passiert es in WPF (MVVM), dass eine UI-Steuerelemente (View/Xaml) zwei DataContexts haben, deshalb verwenden wir die ElementName-Eigenschaft beim Binding-Ausdruck, so dass wir die Binde Eigenschaft aus dem gewünschten DataContext auswählen.Unterstützt angularjs, wie mehrere DataContexte in WPF, diesen Ansatz?

Meine Frage ist: Haben wir diese Situation mit Angularjs? Ich meine zwei Bereiche oder Datenkontexte/ng-Modelle (Was auch immer) für das gleiche UI-Element (HTML-Tag).

+0

Wie kann ein WPF-Steuerelement zwei Datenkontexte haben? Ich arbeite seit fast 10 Jahren mit WPF und habe noch nie so etwas gesehen. –

+0

Es gibt viele Szenarien, die auf diese Situation reitet. http://stackoverflow.com/questions/15498890/multiple-datacontext-for-one-control-mvvm. Dies ist einer von ihnen. –

+0

Das ist kein Steuerelement mit mehreren Datenkontexten, das auf einen Datenkontext von einem anderen Steuerelement zugreift. –

Antwort

0

Die $scope Variable ist das Äquivalent eines .NET DataContext, die verwendet wird, um die Wurzel jeder Daten aufzubauen Ausdruck Bindung, die in den entsprechenden HTML-Code verwendet:

function UserController($scope) { 
    $scope.currentUser = { 
     firstName: "John", 
     lastName: "Doe" 
    }; 
} 

function DocumentController($scope) { 
    $scope.document = { 
     title: "My Document", 
     pageCount: 123 
    }; 
} 

Um einen bestimmten Controller mit einem HTML zu assoziieren Fragment, müssen Sie das ng-Controller-Attribut hinzufügen, um den gewünschten Controller zu referenzieren.

<div ng-app ng-controller="UserController"> 
    First Name: <input type=text ng-model="currentUser.firstName"> <br> 
    Last Name: <input type=text ng-model="currentUser.lastName"><br> 
    Full Name: {{currentUser.firstName}} {{currentUser.lastName}} 
</div> 

<div ng-app ng-controller="DocumentController"> 
    Title: <input type=text ng-model="document.Title"> <br> 
    Page Count: <input type=text ng-model="document.pageCount"><br> 
</div> 
+0

In diesem Beispiel ist FirstName für das Div nicht sichtbar, wo der ng-controller DocumentController ist. In WPF können wir unter Verwendung dieses Pfadelementennamens darauf zugreifen. Was ist mit angularjs? –

+0

Mein Verständnis ist, dass Sie nur auf Eigenschaften auf dem Controller zugreifen können, vielleicht könnten Sie Ihren Benutzer an den Dokumenten-Controller in der JavaScript übergeben für die Ansicht, um darauf zuzugreifen, aber nicht auf den anderen Controller aus dem HTML –

+0

So hier ich denke, wir kann das Xaml mehr Optionen als angularjs Direktive geben? Recht ? –

Verwandte Themen