2017-08-17 21 views
1

値が配列内に存在するかどうか検索しようとしています。私は値をキャプチャするためにui-selectを使用しています。値が存在し、すべてがうまく動作していることを確認する関数を作成しますが、コンソールは何度も表示されます。ここでのデータ未定義のプロパティ 'indexOf'を読み取ることができません

<ui-select multiple ng-model="entrevistainicialModel.personalidad" 
          ng-disabled="false" 
          search-enabled="true" 
          append-to-body="true" 
          class="form-control "> 
        <ui-select-match placeholder="Comportamientos"> 
         {{$item.comportamiento}} 
        </ui-select-match> 
    <ui-select-choices repeat="multipleItem.idcomportamiento as multipleItem in datosJson[0].comportamientos | filter: $select.search"> 
         {{multipleItem.comportamiento}} 
        </ui-select-choices> 
       </ui-select> 

をキャプチャするために使用され、ここで

選択コード機能付きのチェックボックスコード

<td class="text-center"><input type="checkbox" ng-checked="check(entrevistainicialModel.personalidad, 1)" value="1"></td> 

であり、ここでそれが機能

 $scope.check = function (data, n) { 
     if (data.indexOf(n) !== -1) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

だすべてが素晴らしい作品!コンソールだけが私に何度もindexOfのエラーを送信します。

+1

それが配列としてentrevistainicialModelを初期化する配列 –

答えて

0

データのindexOfを読み取れない場合は、データが定義されていないためです。

データには価値がないと言いたいので、indexOfのようなメソッドを持つことはできません。

console.log (typeof data); 

ここでは、データの値の種類を読み取ろうとしています。結果が定義されていない場合は、データが空であることを意味します。

したがって、データが空でない(未定義)かどうかを確認する必要があります。あなたはそのようにそれを確認することができます。

$scope.check = function (data, n) { 
    if (!data) {return;}  // If data is undefined return. 
    if (data.indexOf(n) !== -1) { 
     return true; 
    } else { 
     return false; 
    } 
} 
+0

ありがとう!できます! –

+0

ようこそ@DavidMedina! –

0

undefinedが含まれています。その理由は、あなたが渡しているものがundefinedなので、このメソッドに何も渡していないからです。あなたのコードごとのように、私はentrevistainicialModel.personalidadindexOfメソッドを持っているarrayまたはstringまたは股関節のようなもの、で初期化されなければならないと言うことができ、あなたは、このエラーを取得することはありませんプロパティを読み取ることができません未定義

の「のindexOf」それ以外の場合(data || []).indexOf(...)

+0

- 私としてinicializedています。それから私は変数を使ってjsonデータを入れます。そしてentrevistainicialModel.personalidadどこから初期化したのですか?entrevistainicialModel –

+0

への別の配列ですか?あなたはフィドルやプランナーを追加できますか? –

+0

私はちょうど関数にこれを置く必要がありましたif(!data){return;}助けてくれてありがとう! –

関連する問題