将数据传递到下一页

时间:2017-02-25 17:16:57

标签: javascript angularjs

我遇到了在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')
    }

  }

})

无论我点击哪个城市,控制台都会一直说“其他城市”。 你能告诉我为什么吗?

2 个答案:

答案 0 :(得分:0)

if替换为else 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")
}

在您现有的情况下,假设您点击Chicagoif执行item.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
-------

答案 1 :(得分: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")
}