2013-04-01 15 views
5

Ich habe einige Probleme mit eckigen Bereichen im Kontext einer Registerkarte (Angular UI).Abrufen des Bereichs innerhalb der eckigen UI-Registerkarten

Hier ist meine jsfiddle example (abgespeckte Beispiel zeigt Felder auf mehreren Registerkarten mit einer einzigen Schaltfläche senden außerhalb der Registerkarten).

ist das einfache HTML-Layout:

<form...> 
    <tab> 
    <pane> 
     <input...> 
    </pane> 
    </tab> 
</form> 

Mit Blick auf den jsfiddle example, ohne die Laschen, wenn ich eine sehr einfache Form stelle ich den $ scope.user ein Objekt sein, sehen würde. Da die Felder innerhalb von Bereichen (Registerkarten) liegen, ist der Bereich falsch. Wie kann ich auf das übergebene Benutzerobjekt in createUser zugreifen?

+0

http://stackoverflow.com/questions/22772041/angualrjs-and-angular-ui-bootstrap-tabs-scope –

Antwort

7

Das Problem ist, dass das Modell user tief in einem isolieren Bereich liegt. Damit der Code wie erwartet funktioniert, müssen Sie alert den Wert $scope.$$childHead.panes[0].$$nextSibling.user.first_name nicht $scope.user aus. Dies ist offensichtlich keine Lösung.

Eine einfache Lösung ist das Hinzufügen eines leeren Objekts user zum Controller-Bereich. Die ng-model Direktiven in Ihrem HTML werden dann an diese Eigenschaft gebunden. Ihr Controller sollte wie folgt aussehen:

function MyCtrl($scope) { 
    $scope.user = {}; 
    $scope.createUser = function() { 
    alert($scope.user); 
    }; 
} 
+0

Thank you! Macht perfekt Sinn. –

+0

+1. Beachten Sie, dass in der OP-Geige das 'user'-Objekt auf den umschlossenen Bereichen der Direktiven erstellt wird (nicht auf den isolate-Bereichen der Direktiven). –

Verwandte Themen