2017-08-17 128 views
1

我試圖搜索一個值是否在數組中退出。我使用ui-select捕獲這些值,並且我創建函數來驗證值是否存在,並且所有的工作都很好,但是控制檯多次顯示我無法讀取未定義的屬性'indexOf'。無法讀取未定義的屬性'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

它的國際化作爲數組 –

回答

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

的我很多次錯誤這是因爲data包含undefined,其原因是什麼,你逝去的是undefined或要傳遞什麼這種方法在其他地方。根據你的代碼,我可以說entrevistainicialModel.personalidad應與arraystring或類似的東西塔,其中有indexOf方法來初始化,那麼你就不會得到這個錯誤無法讀取屬性「的indexOf」的未定義

否則你應該處理場景如(data || []).indexOf(...)

+0

我正在初始化entrevistainicialModel作爲數組。然後我使用該變量來放置json數據。並entrevistainicialModel.personalidad它是從你從哪裏初始化entrevistainicialModel –

+0

另一個陣列?你可以添加一個小提琴或蹦牀嗎? –

+0

我只是把這個函數,如果(!數據){返回;}感謝您的幫助! –

相關問題