2014-09-23 3 views
0

나는 항상 그 오류가 발생합니다. 그래서 나는 확실히, "$ scope.permissionExists = function()"에 문제가 있습니다.'indexOf'가 정의되지 않았습니까?

아이디어가 있습니까? 내가 게시 놓친 경우 관련 코드 - 그래서 여기

> TypeError: Cannot read property 'indexOf' of undefined 
>  at Scope.$scope.permissionExists(http://0.0.0.0:9000/scripts/controllers/signature.js:64:31) 
>  at Object.get (http://0.0.0.0:9000/bower_components/angular/angular.js:11064:21) 
>  at Scope.$digest (http://0.0.0.0:9000/bower_components/angular/angular.js:12775:40) 
>  at Scope.$apply (http://0.0.0.0:9000/bower_components/angular/angular.js:13050:24) 
>  at done (http://0.0.0.0:9000/bower_components/angular/angular.js:8525:45) 
>  at completeRequest (http://0.0.0.0:9000/bower_components/angular/angular.js:8739:7) 
>  at XMLHttpRequest.xhr.onreadystatechange (http://0.0.0.0:9000/bower_components/angular/angular.js:8678:11) 

내 코드 말해주십시오 JS

$scope.data = { 
      newCustomerSig: null, 
      newAccountSig: null, 
      user: null, 
      account: null, 
      permissions: null, 
      maxSms: 1 
     }; 
.... 
var getAccountPermission = function() { 
      // check only when authenticated (or refresh possible) 
      AccountPermissions.one().getList().then(
       function (resultOk) { 
       var permission = resultOk.data; 
       $log.d("AccountPermissions ok: ", resultOk); 
       $scope.data.permissions = permission; 
       }, 
       function (resultError) { 
       $log.d("Accountinfo error: ", resultError); 
       ErrorService.showApiError(resultError); 
       }, 
       function (resultNotify) { 
       $log.d("Accountinfo notify:", resultNotify); 
       } 
     ); 
     }; 

     $scope.permissionExists = function() { 
      if (data.permissions.indexOf("sign_change_global") > -1) { 
      //In the array! 
      return true; 
      } else { 
      return false; 
      //Not in the array 
      } 
     }; 
.... 

"sign_change_global"<은 배열의 값은

HTML

.... 
<form name="formSignature" class=""> 
    <div> 
     <i> Persönliche Signatur </i><br/> 
     <textarea id="persSignatur" name="persSignatur" 
       rows="5" cols="40" 
       use-sms-counter="data.smsCounter" 
       ng-model="data.newAccountSig" 
       ng-trim="false" 
       placeholder="{{data.user.signature}}"> 
     </textarea> 
     <div> 
     {{data.newAccountSignewAccountSig}} 
     {{data.smsCounter.textLength}} 
     {{data.smsCounter.isUcs2}} 
     <div class="amount" 
      data-sms-counter="data.smsCounter" 
      data-sms-counter-content-list="[data.newAccountSig]" 
      data-max-messages="1"> 
     </div> 
     {{data.smsCounter}} 

     </div> 

    </div> 
.... 

답변

2

if 문에 $scope.permissionExists = function()data.permissions이 있지만 $scope.data.permissions이어야합니다. 다음과 같이 표시되어야합니다. -

$scope.permissionExists = function() { 
     if ($scope.data.permissions.indexOf("sign_change_global") > -1) { 

이 정보가 도움이되기를 바랍니다.

2

당신은 같은 경우 조건에 $ 범위를 추가해야합니다

if ($scope.data.permissions.indexOf("sign_change_global") > -1){ 
    ... 
} 

감사

관련 문제