2017-02-25 6 views
0

Ich hatte ein Problem mit dem Durchblättern der Seiten in angularjs. Aus irgendeinem Grund fangen alle Parameter zu IDs ein.Übergeben von Daten an die nächste Seite

angular.module("bookapp").controller("Step1Ctrl", function($scope, stepsdata, $state) { 

$scope.steps.set(1) 
    $scope.list = [ 
    {name: 'Chicago', id: 0}, 
    {name: 'APA', id: 1}, 
    {name: 'MLA', id: 2}, 
    {name: 'Harvard', id: 3}, 
    {name: 'Vancouver', id: 4}, 
    // {name: 'Vancouver', id: 5}, 

    ] 

    $scope.nextStep = function(item){ 
    stepsdata.step1 = item.name 
    if ($state.params.id){ 
     if(item.id == 0){ 
     console.log("Chicago step") 
     $state.go('app.steps.two',{id: $state.params.id})} 
     if(item.id == 1){ 
     console.log("APA step") 
     $state.go('app.steps.two',{id: $state.params.id})} 
     if(item.id == 2){ 
     console.log("MLA step") 
     $state.go('app.steps.two',{id: $state.params.id})} 
     if(item.id == 3){ 
     console.log("Harvard step") 
     $state.go('app.steps.two',{id: $state.params.id})} 
     if(item.id == 4){ 
     console.log("Vancouver") 
     $state.go('app.steps.two',{id: $state.params.id})} 

     else{ 
     console.log("other city") 
     } 
    } else { 
     $state.go('app.steps.two') 
    } 

    } 

}) 

Die Konsole sagt „andere Stadt“ die ganze Zeit, egal in welcher Stadt ich auf. Können Sie mir sagen, warum?

+0

an der Logik sucht es wie Ihr $ state.params.id scheint, ist null, Sie, dass an der Konsole anmelden könnten und überprüfen? Auch was meinst du mit allen Params "fangen" zu Ids? – raghav710

+0

wenn ich auf die Chicago-Taste klicke, sagt die Konsole "Chicago Step" und andere Stadt ", wenn ich auf die APA-Taste klicke, sagt die Konsole" APA Schritt "und andere Stadt" ... sieht aus wie ID von der ID right-Parameter und dann immer einen Null-Parameter – lookasz

+0

Ich denke, Sie fehlen eine schließende Klammer vor dem else. Womit passt die "andere Stadt"? – raghav710

Antwort

0

Verwendung else if für andere Optionen

if (item.id == 0) { 
    console.log("Chicago step") 
    $state.go('app.steps.two', { id: $state.params.id }) 
} 
else if (item.id == 1) { 
    console.log("APA step") 
    $state.go('app.steps.two', { id: $state.params.id }) 
} 
else if (item.id == 2) { 
    console.log("MLA step") 
    $state.go('app.steps.two', { id: $state.params.id }) 
} 
else if (item.id == 3) { 
    console.log("Harvard step") 
    $state.go('app.steps.two', { id: $state.params.id }) 
} 
else if (item.id == 4) { 
    console.log("Vancouver") 
    $state.go('app.steps.two', { id: $state.params.id }) 
} 

else { 
    console.log("other city") 
} 
+0

Es funktioniert, danke! – lookasz

0

Ersetzen Sie die if s durch else if s. In diesem Fall wird jede einzelne if nicht überprüft.

if(item.id == 0){ 
    console.log("Chicago step") 
    $state.go('app.steps.two',{id: $state.params.id}) 
} 
else if(item.id == 1){ 
    console.log("APA step") 
    $state.go('app.steps.two',{id: $state.params.id}) 
} 
else if(item.id == 2){ 
    console.log("MLA step") 
    $state.go('app.steps.two',{id: $state.params.id}) 
} 
else if(item.id == 3){ 
    console.log("Harvard step") 
    $state.go('app.steps.two',{id: $state.params.id}) 
} 
else if(item.id == 4){ 
    console.log("Vancouver") 
    $state.go('app.steps.two',{id: $state.params.id}) 
} 
else{ 
    console.log("other city") 
} 

In Ihrem bestehenden Fall, sagen Sie auf Chicago klicken, wird der if für item.id == 0 ausgeführt wird, aber die Steuerung nicht beendet an dieser Stelle. Die anderen if s Bedingungen werden ebenfalls überprüft. Der else Teil ist die if für Vancouver abgestimmt und dass daher auch ausgeführt wird (Um klar zu sein, ist der Strom sonst so gut wie das Schreiben if(item.id !== 4))

Hier ist der Fluss, wenn Sie auf Chicago:

id == 0 -> YES -> Execute if block 
id == 1 -> NO -> Skip 
id == 2 -> NO -> Skip 
id == 3 -> NO -> Skip 
----------- 
id == 4 -> NO -> Skip 
else (i.e. id != 4) -> YES -> Execute block 
------- 
+0

Es funktioniert, danke! – lookasz

Verwandte Themen