2017-05-12 25 views
0
var options = { 
     url: function (phrase) { 
      return "location/autoComplete?key=" + phrase; 
     }, 

     getValue: "cityName", 

     template: { 
      type: "custom", 
      method: function (value, item) { 
       return value + ", " + item.stateName; 
      } 
     }, 

     list: { 

      onClickEvent: function() { 
       var selectedLongitude = $("#autoCompleteSearch").getSelectedItemData().longitude; 
       var selectedLatitude = $("#autoCompleteSearch").getSelectedItemData().latitude; 


       userPos = { 
        lat: Number(selectedLatitude), 
        lng: Number(selectedLongitude) 
       }; 
       map.setCenter(userPos); 
       map.setZoom(17) 
      }, 

      showAnimation: { 
       type: "fade", //normal|slide|fade 
       time: 400, 
       callback: function() { 
       } 
      }, 

      hideAnimation: { 
       type: "slide", //normal|slide|fade 
       time: 400, 
       callback: function() { 
       } 
      } 
     } 
    }; 

これは私が今リモートWebサービスデータを取得するために使用しているコードです。今私はデータを取得し、重複した "都市名"を削除する必要があります。また、Webサービスからのデータがない場合は、「データが利用できません」またはカスタムメソッドを表示する必要があります。私はこだわっています。もし誰かがこれを達成する方法を私に指摘することができれば素晴らしいだろう。easyAutoCompleteをカスタマイズする

答えて

0

あなたはヘルパーfunctionを使用して、重複を取り除くことができます:

function removeDuplicates(input) { 
    if (!input) { //Falsy input 
     return input; 
    } 
    var isArray = Array.isArray(input) ? [] : {}; 
    var items = []; 
    var output = {}; 
    for (var key in input) { 
     if (items.indexOf(input[key]) < 0) { 
      items.push(input[key]); 
      if (!isArray) { 
       output[key] = input[key]; 
      } 
     } 
    } 
    return isArray ? items : output; 
} 

Array.isArray(input) ? (input.length === 0) : (Object.keys(input).length === 0 && input.constructor === Object)場合は、カスタムテキストを表示することができます。

関連する問題