2017-08-17 23 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

我只是把这个函数,如果(!数据){返回;}感谢您的帮助! –

相关问题