2014-06-16 18 views
0

我有一個javascript函數如下:的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 

我檢查已經有幾個問題了,但我不確定我是否能夠完全理解這裏的錯誤。

+1

爲什麼不簡單'if(mpttexclusion.indexOf(',')> -1)'? – Satpal

+1

if(','in mpttexclusion) - >這很奇怪。你的意思是「if($ scope.mpttexclusion)?」 – pixelbits

+7

'in'在對象中找到屬性,而不是子串。 –

回答

3

可以使用的indexOf代替:

if($scope.mpttexclusion.indexOf(',') >= 0) 
    $scope.exclusion = $scope.mpttexclusion.split(','); 
else 
    $scope.exclusion = $scope.mpttexclusion; 
+0

您好,我收到一個「對象175沒有方法indexOf()」 – Abhishek

+0

什麼是$ scope.mpttexclusion的值? –

+0

它現在只有175,但在後期階段,它可能會得到值,如123,456,345 .. – Abhishek

1

你應該做的一樣,

if (mpttexclusion.indexOf(',') > -1){ 

代替

if (',' in mpttexclusion){ 

因爲in像迭代基本上使用,

var x = [10,2,3,1]; 

for(val in x){ 
console.log(val); 
} 
+0

你應該寫'$ scope.mpttexclusion.indexOf(',')' –

+0

仍然是同樣的錯誤。任何其他方法? – Abhishek

0

如弗雷德裏克在最初的問題的評論中指出:

for (var x in object) { 
    ...some code... 
} 

是相當用於除字符串對象。

或者像MDN這樣描述的:

Iterates over the enumerable properties of an object, in arbitrary order. For each distinct property, statements can be executed.

當別人已經指出了正確的答案我只是想我鏈接到的資源可以幫助你瞭解與方法的問題到與經。

希望這會有幫助