簡體   English   中英

無法從md-autocomplete中的對象數組獲取值

[英]Unable to get the value from an array of object in md-autocomplete

我有一個對象數組,現在我正在嘗試選擇數據。 封閉文件是我在控制台中獲取的對象的快照。 在此處輸入圖片說明

即使用戶通過自動完成對象中的對象使用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
  }

reportManager是一個數組數組,其中包含我包含在快照中的對象。 任何對此的幫助將是非常可觀的
問候

首先,我要感謝@ 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>

Psst **如果您嘗試在彈出窗口中獲取自動完成功能,請不要忘記為z-index設置較高的值

並在控制器中包含$q

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM