2017-02-25 70 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