我有一个对象数组,现在我正在尝试选择数据。所附文件是我在控制台中获取的对象的快照。
即使用户通过自动完成中的对象中的 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 是一个数组数组,其中包含我已包含在快照中的对象。
对此的任何帮助将非常感激
问候
最佳答案
首先,我要感谢 @Titus 一直在我身边并与我一起解决我的问题。
问题不仅与 Javascript 代码有关,还与 CSS 有关。由于我尝试将 md-autocomplete
放入模态弹出窗口中,经过多次尝试后,自动完成建议出现了,但它位于模态后面。这是工作代码
$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.emailid)
//console.log(result)
}
})
})
deferred.resolve(result)
}
if(text){
resolve(reportingManager? reportingManager: [])
}else{
resolve([]);
}
return deferred.promise
}
HTML:
<div class="md-virtual-repeat-container">
<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-selected-item="selectedManager"
md-floating-label="Reporting Manager">
<md-item-template>
<span md-highlight-text="searchText" md-highlight-flags="^i">{{item}}</span>
</md-item-template>
</md-autocomplete>
</div>
嘘**如果您尝试在弹出窗口中获得自动完成功能,请不要忘记为 z-index
设置较高的值
并在 Controller 中包含 $q
关于javascript - 无法从 md-autocomplete 中的对象数组中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47768501/