• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage urls in angularjs

theoretisch

Mitglied
Hallöchen,
im Moment beschäftige ich mich mit angularjs.. und habe dazu auch eine Frage.
Ich hoffe das passt hier ins js Forum... wenn nicht dann bitte einfach verschieben.( oder wenns garnicht passt einfach löschen)
Und zwar versuche ich mich dort grad am routing.
Dort wird dann ein bestimmter Code ausgeführt wenn die URL eine bestimmte Endung hat.
Nur wie kann ich die Url "bearbeiten"... bzw da etwas hinten anhängen wenn eine Seite geladen wird?
Hier mal ein Teilcode des Routers.
Code:
function RoutingTable($stateProvider, $urlRouterProvider, BaseUrl) {
       
        var baseUrl = BaseUrl + '/productCalculation/pages/';
        $stateProvider
               .state('start.test',{
                   url:'/test',
               templateUrl: baseUrl + 'queries/test.html',
               controller: 'productController',
               parent:'start'
            })

Das würde also bewirken wenn meine url der Seite die Endung /test hat dann wird der controller 'productController' ausgeführt und die entsprechende html eingefügt usw... wie auch immer.
Meine Frage ist nun halt wie kann ich es machen, das z.b. bei dem Klick eines Buttons oder ähnlichem, sich die URL der Seite ändert.
Ich habe schon so viel gegoogelt... aber entweder falsch oder es gibt wirklich nichts dazu.
Ich hoffe hier hat jemand ein wenig Ahnung davon und kann mir vielleicht einen Tipp geben..
Vielen Dank
theoretisch
 
Werbung:
danke für die schnelle Antwort!
hmm ja das habe ich auch schon gelesen...
aber dann schaue ich nochmal genauer nach $routeParams

und wie würde ich das machen wenn ich den Controller aufrufen will wenn keine Veränderung ist ?
url:'',
habe ich schon versucht das geht nicht.... oder muss sich zwangsläufig immer was an der URL ändern?
 
Werbung:
Tipp: Lege den ui-router vorerst zur Seite und verwende den Standard Router; der ist leichter zu verstehen.

und wie würde ich das machen wenn ich den Controller aufrufen will wenn keine Veränderung ist ?
Ich verstehe die Frage nicht. Der Controller wird mit dem Laden des Templates initialisiert und das Template ist an eine Route gebunden. Innerhalb der App navigierst du über normale Links oder Redirects wie $location.search(). Um den Controller ohne Routenwechsel zu reinitialisieren könnte man $route.reload() aufrufen. Das ist aber in der Regel unnötig.
 
ich muss den ui-router nehmen.. ich arbeite an einen fertigen Projekt wo ich ein paar Veränderungen machen will. dort wurde schon alles mit dem ui-router gemacht.
ich möchte dort nun "einfach" die Startseite erweitern indem ich den Router erweitere und halt meine Ergänzung auf der entsprechenden Seite mit ui-view einfügen kann.

Also habe ich eine neue html Seite und den dazugehörigen Controller geschrieben.
Auf der Startseite habe ich ein div mit ui-view eingefügt und in dem Router einen neuen .state hinzugefügt.
Dieser state enthält den Controller zu der neuen Seite, die TemplateUrl , die Information das meine neue Seite das child von der Startseite ist sowie die URL bei der das ganze aktiviert werden soll.

Das Problem ist nun das wenn die Startseite aufgerufen wird die url mit /start endet.
Wenn ich nun mein html dort einfügen will mit ui-view dann muss ich an das /start irgendetwas dranhängen....was ich dann in der url beim Router angeben kann (z.b. bei /start/ -> url:'/')
ODER ich schaffe es irgendwie das meine Ergänzung auch aktiviert wird ohne das ich die url ergänzen muss.

Leider habe ich bis jetzt weder das eine noch das andere geschafft.
Was heißt das meine Ergänzung nicht beim laden der Startseite ergänzt wird sondern nur wenn ich anschließend die url von Hand ergänze. Und irgendwie würde ich es gerne schaffen das meine html halt automatisch mit geladen wird... wie auch immer...
 
Ok, ich kenne den ui-router jetzt nicht so gut, aber du könntest für das Template einen eigenen Controller definieren und diesen per ng-control direct innerhalb des Templates (also nicht in der Route) applizieren. Weitere Möglichkeiten wären, die Funktionalität per resolve{} direkt in den State zu injecten oder im Controller des Parent Views ein StateChangeSuccess Event aufzurufen, welches Funktionen nachlädt.
 
Werbung:
Ok danke, dann versuch ich das einfach mal.
jaa zur not würde ich es einfach in den Controller der Startseite direkt mit reinschreiben, das sollte klappen.
hatte halt gehofft das ich da nicht groß in dem Code rumschreiben muss... mit einer Ergänzung im Router und eigenem Controller fände ich das übersichtlicher.
Aber ich schau mir erstmal das mit resolve oder StateChangeSuccess an.
Mal sehen wie das geht, vielleicht is das ja auch nicht schlecht.
Ich melde mich nochmal wenn ich das beides versucht habe.
Aber wenn trotzdem noch wer eine Idee hat wie ichs mit dem Router hinbekomme gerne schreiben.
So schwer kann das eigentlich nicht sein.... aber ich blicks trotzdem nicht irgendwie -.-
 
Zurück
Oben