【发布时间】:2018-05-25 21:29:23
【问题描述】:
我有一个对象数组,现在我正在尝试选择数据。随附的文件是我在控制台中获取的对象的快照。
即使用户通过自动完成对象中的 empid 或 empname 或 emailid 搜索,我也想获取 emailid。
但是当我开始输入md-autocomplete 时,我无法检索到这个,我的屏幕闪烁并且从未给我过滤项目列表。
更新代码:
<md-autocomplete flex required
md-search-text="searchText"
md-input-name="autocomplete"
md-search-text-change="searchTextChange(searchText)"
md-items="item in search(searchText)"
md-item-text="item"
md-floating-label="Reporting Manager">
<md-item-template>
<span md-highlight-text="searchText" md-highlight-flags="^i">{{item.empname}}</span>
</md-item-template>
</md-autocomplete>
这是我的 javascript search() 函数
$scope.search = function(text){
var deferred = $q.defer()
var result = []
var resolve = function(reportingManager){
//console.log(reportingManager)
angular.forEach(reportingManager,function(val){
//console.log(val)
angular.forEach(val,function(value){
//console.log(value)
if(value.empid.toUpperCase().includes(text.toUpperCase())
|| value.empname.toUpperCase().includes(text.toUpperCase())){
result.push(value.empname)
//console.log(result)
}
})
})
deferred.resolve(result)
}
if(text){
resolve(reportingManager? reportingManager: [])
}else{
resolve([]);
}
return deferred.promise
}
reportingManager 是一个数组数组,其中包含我在快照中包含的对象。
对此的任何帮助都将非常可观
问候
【问题讨论】:
-
看来
val是Object,如果是这样的话,就没有val.indexOf函数了。 -
@Titus 我正在尝试查看数组中的每个对象
-
您必须使用如下条件:
val.empid.toUpperCase().indexOf(text.toUpperCase()) != -1 || val.emailid.toUpperCase().indexOf(text.toUpperCase()) != -1 -
@Titus 我试过但还是同样的问题
-
似乎
angular.forEach()在调试时没有执行
标签: javascript arrays angularjs autocomplete