AngularJS Example:

HTML

<link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css">
<div ng-app="myApp">
  <h2>Todo</h2>
  <div ng-controller="TodoCtrl">
  <div class="container">
  <input type="text" id="autoComplete" placeholder="sector" autocomplete="off"/>
  <datalist id="dataList"/>
  
</div>

  </div>
</div>

CSS

#dataList {
  display: none;
  height: 120px;
  overflow: auto;
  left: 0;
  border: 1px solid black;
}
#scrolldatalist {
  display: none;
  height: 80px;
  overflow: auto;
}
#dataList option ,#scrolldatalist option{
  font-family: arial;
  font-size: 11.8px;
  cursor: pointer;
  padding: 5px 10px;
  font-weight: bold;
}


#dataList.show,#scrolldatalist.show {
  display: block;
}

JavaScript

var app = angular.module('myApp', []);

app.controller('TodoCtrl', function($scope,$timeout) {
  $scope.CountryList = [
    {name:'india'},
    {name:'usa'},
    {name:'iran'},
    {name:'australia'},
    {name:'china'},
    {name:'delhi'},
    {name:'korea'},
    {name:'france'}
    
    ];
const dataList = document.getElementById('dataList');
const input = document.getElementById('autoComplete');
var dataList2;
for (let i = 0; i < $scope.CountryList.length; ++i) {
if(i<5){
   option = document.createElement('option');
  option.setAttribute('value', $scope.CountryList[i].name);
  option.innerHTML = $scope.CountryList[i].name;
  dataList.appendChild(option);
  }else{
  if(i==5){
  dataList.innerHTML+='<datalist id="scrolldatalist"/>'
  }
  dataList2 = document.getElementById('scrolldatalist');
  console.log(dataList2)
    option = document.createElement('option');
  option.setAttribute('value', $scope.CountryList[i].name);
  option.innerHTML = $scope.CountryList[i].name;
  dataList2.appendChild(option);

  
  }
  
}

dataList.querySelectorAll('option').forEach((el, idx, arr) => {
  el.addEventListener('click', (e) => {
    input.value = el.value;
  });
});
dataList2.querySelectorAll('option').forEach((el, idx, arr) => {
  el.addEventListener('click', (e) => {
    input.value = el.value;
  });
});
input.addEventListener('focus', showList);

input.addEventListener('blur', () => {
  setTimeout(() => {
    dataList.classList.remove('show');
    dataList2.classList.remove('show');
  }, 300);
});

input.addEventListener('keyup', showList);

function showList() {
  if (!!input.value) {
    input.setAttribute("list", "dataList");
    dataList.classList.remove('show');
    dataList2.classList.remove('show');
  } else {
    input.removeAttribute("list");
    dataList.classList.add('show');
    dataList2.classList.add('show');
  }
}

input.addEventListener('change', () => {
  if(!dataList.querySelector(`option[value='${input.value}']`)) {
    input.value = '';
  } else {
  ...