我遇到了在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 :(得分: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")
}
在您现有的情况下,假设您点击Chicago
,if
执行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")
}