AngularJS forEach问题

时间:2014-07-01 18:24:49

标签: angularjs foreach

我已经有了这个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()

1 个答案:

答案 0 :(得分:1)

看来你错过了一个开口的curley brace {。添加它,如下所示:

if(_searchParams[key].indexOf(state.id) > -1) {

然后取出你添加的分割部分。否则,在某些情况下,您将state.selected设置为true,然后设置为false。