我已经有了这个foreach,它为= _searchParam[key]
的{{1}}正确设置了statesList中状态的选定值。
但是,如果state.id
包含多个格式为“”NH,TX“的值,那么if语句将失败并且匹配永远不会发生,因此所有选中的项都设置为false。
_searchParam[key]
所以,我尝试拆分var _states = [];
angular.forEach($scope.statesList, function (state, key2) {
if(_searchParams[key].indexOf(state.id) > -1)
if(state.id == _searchParams[key]) {
state.selected = true;
} else {
state.selected = false;
}
this.push(state);
if(state.selected)
$scope.states.push(state);
}, _states);
值并循环遍历它们但它无效。查看评论中的错误
_searchParams[key]
所以,我将var _states = [];
angular.forEach($scope.statesList, function (state, key2) {
if(_searchParams[key].indexOf(state.id) > -1)
var sp = _searchParams[key].split(',');
for(i = 0; i < sp.length; i++) {
if(state.id == sp[i]) {
state.selected = true;
} else {
state.selected = false;
}
}
}
this.push(state); // get unexpected token this
if(state.selected)
$scope.states.push(state);
}, _states);
行移到了if(无论如何都应该在那里),并得到以下错误。
this.push(state)
现在我该如何解决这个问题,因为我不确定导致这些错误的var _states = [];
angular.forEach($scope.statesList, function (state, key2) {
if(_searchParams[key].indexOf(state.id) > -1)
var sp = _searchParams[key].split(',');
for(i = 0; i < sp.length; i++) {
if(state.id == sp[i]) {
state.selected = true;
} else {
state.selected = false;
}
}
this.push(state);
}
if(state.selected) // get unexpected token if
$scope.states.push(state);
}, _states);
会发生什么?
statesList的定义如下:
forEach()
答案 0 :(得分:1)
看来你错过了一个开口的curley brace {。添加它,如下所示:
if(_searchParams[key].indexOf(state.id) > -1) {
然后取出你添加的分割部分。否则,在某些情况下,您将state.selected设置为true,然后设置为false。