我有一个javascript函数如下:
if (',' in mpttexclusion){
$scope.exclusion = $scope.mpttexclusion.split(',');
} else {
$scope.exclusion = $scope.mpttexclusion;
}
但是当我检查控制台时,我收到了这个错误:
TypeError: Cannot use 'in' operator to search for ',' in 175
at new ModalInstanceCtrl (http://127.0.0.1:8000/static/js/app.js:180:15)
at invoke (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:3704:17)
at Object.instantiate (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:3715:23)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:6766:28
at http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.10.0.min.js:8:22381
at wrappedCallback (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:10943:81)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:11029:26
at Scope.$eval (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:11949:28)
at Scope.$digest (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:11775:31)
at Scope.$apply (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:12055:24) angular.js:9413
(anonymous function) angular.js:9413
(anonymous function) angular.js:6832
wrappedCallback angular.js:10946
(anonymous function) angular.js:11029
Scope.$eval angular.js:11949
Scope.$digest angular.js:11775
Scope.$apply angular.js:12055
(anonymous function) angular.js:17833
(anonymous function) angular.js:2612
forEach angular.js:309
eventHandler angular.js:2611
我已经检查了几个问题,但我不确定我是否能完全理解这里的错误。
答案 0 :(得分:3)
您可以改为使用indexOf:
if($scope.mpttexclusion.indexOf(',') >= 0)
$scope.exclusion = $scope.mpttexclusion.split(',');
else
$scope.exclusion = $scope.mpttexclusion;
答案 1 :(得分:1)
你应该这样做,
if (mpttexclusion.indexOf(',') > -1){
而不是
if (',' in mpttexclusion){
因为in
基本上在迭代中使用,如
var x = [10,2,3,1];
for(val in x){
console.log(val);
}
答案 2 :(得分:0)
正如Frédéric在最初问题的评论中所指出的那样:
for (var x in object) {
...some code...
}
更适用于对象而不是字符串。
或MDN描述它:
以任意方式迭代对象的可枚举属性 订购。对于每个不同的属性,可以执行语句。
正如其他人已经指出正确的答案我只是认为我链接到一个资源,可以帮助你理解与方法的问题。
希望这有帮助