2017-06-02 4 views
0

J'ai un html datalist qui fournit la liste des nom de compte dont environ 14k +, il fonctionne très bien, mais tout navigateur je volonté not respond d'abord, puis fourni avec succès les données datalist utilisant ng-repeat. Dans le pire des cas, le navigateur a planté.navigateur écrasé lorsque AngularJS fournissent des données sur HTML datalist

C# backend

public JsonResult getCollateralAccount() { 
     List<collateralAccount> accountlist = new List<collateralAccount>(); 
     sqlHelper = new QueryHelper(); 
     SqlParameter[] parameterList = { }; 
     var table = sqlHelper.ExecuteQuery("collateralGetListOfAccount", System.Data.CommandType.StoredProcedure, parameterList).Tables[0]; 
     accountlist = table.AsEnumerable().Select(row => new collateralAccount 
       { 
        Id = row.Field<int>("Id"), 
        name = row.Field<string>("name") 
       }).ToList(); 

     return new JsonResult { Data = accountlist, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
} 

service

getCollateralAccount: function (data) { 
    var $getCollateralAccount = $http.get('/Collatera/getCollateralAccount'). 
    success(function (data) { 
     return data; 
    }); 
    return $getCollateralAccount; 
} 

Contrôleur

$scope.listofCAccount = []; 
CollateralService.getCollateralAccount().then(function(msg){ 
    if(msg.data.length>0){ 
     $scope.listofCAccount = msg.data; 
    } 
}); 

Voir

<input id="username" type="text" class="form-control width100" list="UsersName" ng-model="user.name" required/> 
<datalist id="UsersName"> 
     <option ng-repeat="acc in accListContainer track by $index" value="{{acc.name}}" data-val="{{acc.name}}"></option> 
</datalist> 

Quelqu'un peut me aider comment arrêter mon navigateur de tomber en panne ou ne répond pas?

Répondre

0

success/error est obsolète, vous utilisez également then à votre contrôleur, il suffit donc de modifier votre service comme ci-dessous (renvoyer la promesse de $ http.get directement).

getCollateralAccount: function (data) { 
    return $http.get('/Collatera/getCollateralAccount'); 
} 
+0

@Pengyy ok je vais essayer – pryxen

+0

je l'ai déjà fait il @Pengyy mais le navigateur ne répond pas toujours, mais cette fois-ci récupère plus rapide que la dernière fois – pryxen

+0

@pryxen il y a trop de données, vous devriez peut-être envisager d'utiliser la pagination ou le défilement virtuel. :-) – Pengyy