Javascript 尝试使用自动完成的推送添加对象时,缺少$$Hashkey
带有硬编码对象的数组显示在my ng repeat中Javascript 尝试使用自动完成的推送添加对象时,缺少$$Hashkey,javascript,jquery,angularjs,autocomplete,Javascript,Jquery,Angularjs,Autocomplete,带有硬编码对象的数组显示在my ng repeat中 $scope.deltagarelist = [{ label: "Nils", value: "3" }]; 这是我的javascript/angular混合代码,用于从autocomplete中获取选定值并将其推送到objectarray中 $(".addDeltagare").autocomplete( { source: function (request, response) { $.ajax({
$scope.deltagarelist = [{ label: "Nils", value: "3" }];
这是我的javascript/angular混合代码,用于从autocomplete中获取选定值并将其推送到objectarray中
$(".addDeltagare").autocomplete(
{
source: function (request, response) {
$.ajax({
url: url,
data: { query: request.term },
datatype: 'jsonp',
success: function (data) {
response($.map(data, function (item) {
return {
label: item.Label,
value: item.Value
}
}));
}
});
},
minLength: 3,
select: function (event, ui) {
event.preventDefault();
addtolist(ui.item);
console.log($scope.deltagarelist);
$(this).val('');
},
focus: function (event, ui) {
$("#addDeltagare").val(ui.item.label);
return false;
}
});
我的功能是将对象推入列表
function addtolist(item) {
$scope.deltagarelist.push({label:item.label,value:item.value});
}
我的问题是,我的硬编码家伙“Nils”得到了一个$$hashkey,但当我以这种方式向列表中添加一个对象时,它没有得到hashkey,它会添加到数组中,但不会出现在我的repeat中。
关于如何更改此代码以使其正常工作,有什么想法吗?
或者我应该寻找其他更“角度方式”的方法吗?解决方案是在
ng repeat
中添加一个track by
,这样AngularJS就不需要使用$$hashkey
来跟踪更改
<div ng-repeat="val in deltagarelist track by val.value">
$ajax是异步的,这意味着在下载数据之前已经构建了NG应用程序。一种解决方法是使$ajax同步,以便所有内容都等待数据下载。此外,我还必须在addtolist()函数中添加$scope。$apply()。谢谢你的帮助。