2017-02-25 71 views
0

我在使用angularjs瀏覽頁面時遇到了問題。出於某種原因,所有參數都會被輸入到ID中。將數據傳遞到下一頁

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') 
    } 

    } 

}) 

控制檯一直說「其他城市」,無論我點擊哪個城市。 你能告訴我爲什麼?

+0

看着好像你$ state.params.id邏輯爲空,你可以日誌到控制檯和檢查?所有參數又是什麼意思,「抓」到Ids? – raghav710

+0

當我點擊芝加哥按鈕,控制檯說「芝加哥步」和其他城市「,當我點擊APA按鈕時,控制檯說」APA步「和其他城市」...看起來像它從正確的參數,然後一個空參數一直 – lookasz

+0

我認爲你在else之前缺少一個右大括號。 「其他城市」與其他什麼相匹配? – raghav710

回答

0

使用else if其他選項

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

它的工作原理,謝謝! – lookasz

0

else if s代替if s。在這種情況下,每個if都沒有被選中。

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") 
} 

在現有的情況下,說你點擊Chicagoifitem.id == 0被執行,但該控件不退出在這一點上。其他if的條件也被檢查。該else部分匹配到if溫哥華,因此,這也同樣執行(要清楚,否則當前是寫作if(item.id !== 4)一樣好)

這裏是流當您單擊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

它的工作原理,謝謝! – lookasz