2016-03-21 6 views
1

Haben Sie ein Problem, wenn mehrere verschachtelte Ansichten und ControllerAsAngulart ui-Router Multiply Ansichten und ControllerAs

Hier Beispiel meiner Coffeescript und Vorlagen

Staaten mit:

.state "users" , 
    abstract: true, 
    url:"/users", 
    views: 
     "MainLayout": 
     templateUrl:"users.html", 
    .state "users.add" , 
    url:"/users-add", 
    views: 
     "ContentLayout": 
     templateUrl:"users-add.html", 
     controller:"UsersAddController", 
     contollerAs:"formctrl", 
     "SideLayout": 
     templateUrl:"users-side.html", 
    cache: false 
    .state "users.list" , 
    url:"/users-list", 
    views: 
     "ContentLayout": 
     templateUrl:"users-list.html", 
     controller:"UsersController", 
     contollerAs:"userlist" 
     "SideLayout": 
     templateUrl:"users-side.html", 
    cache: false 

users.html

<div class="content" ui-view="ContentLayout"></div> 
<div class="side" ui-view="SideLayout"></div> 

benutzerliste.html

{{ userlist.result }} 

Benutzer-add.html

{{ formctrl.addresult }} 

Benutzer-side.html

<menu> 
<a ui-sref="users.list">List</a> 
<a ui-sref="users.add">Add</a> 
</menu> 

Userscontroller als Probe

(-> 
    UsersController =()-> 
    vm = @ 
    vm.result = "Result" 
    return vm 
    angular 
    .module("myapp") 
    .controller("UsersController", UsersController))() 

Dies funktioniert überhaupt nicht, aber wenn ich machen es mit $ scope, alles funktioniert normal. Was habe ich falsch gemacht?

+0

warum Sie vm in der Steuerung der Rückkehr werden? –

+0

weil ohne diese cotrolllerAs Syntax nicht funktioniert. – Painhardcore

Antwort

0

als Sudakatux sagte ist es eine issue on angular-ui-router github

Soooo, geschaltet i an einen anderen Router dass mit Kaffee arbeiten normal und controllerAs (muss zurückkehren @).

Andernfalls müssen Sie Ihre App Refactoring - einfach js verwenden oder mit ng-Controller in Vorlagen machen

1

auf dem Kind Ansichten Sie die Eltern überschreiben sehen, so dass Sie das @ simbol versuchen, dies zu verwenden:

.state "users.add" , 
    url:"/users-add", 
    views: 
     "[email protected]": 
     templateUrl:"users-add.html", 
     controller:"UsersAddController", 
     contollerAs:"formctrl", 
     "[email protected]": 
     templateUrl:"users-side.html", 
    cache: false 
    .state "users.list" , 
    url:"/users-list", 
    views: 
     "[email protected]": 
     templateUrl:"users-list.html", 
     controller:"UsersController", 
     contollerAs:"userlist" 
     "[email protected]": 
     templateUrl:"users-side.html", 

Ok jetzt so, dass ich Ihren Plunker sehen, da Sie ui-Ansichten innerhalb ui verwenden -Ansichten, müssen Sie enthalten, was ovrwride oder Ziel:

state "users.add" , 
    url:"/users-add", 
    views: 
     "[email protected]": 
     templateUrl:"users-add.html", 
     controller:"UsersAddController", 
     contollerAs:"formctrl", 
     "[email protected]": 
     templateUrl:"users-side.html", 
    .state "users.list" , 
    url:"/users-list", 
    views: 
     "[email protected]": 
     templateUrl:"users-list.html", 
     controller:"UsersController", 
     contollerAs:"userlist" 
     "[email protected]": 
     templateUrl:"users-side.html", 

So im der ContentLayout Targeting '@' an den Benutzer Zustand.

hier Ihre festen Plunker http://plnkr.co/edit/vPdjntVJn9dVE9Y7mkm3?p=preview

Hoffe, es

in den Kommentaren hilft
+0

Not half mir überhaupt.Anhang Seite.Schlitten falsch und ich kann dieses Problem nicht über 2 Tage lösen :(Ich probierte viele Kombinationen – Painhardcore

+0

irgendwelche Fehler auf der Konsole? – jstuartmilne

+0

nein, keine Fehler in der Konsole – Painhardcore

Verwandte Themen