带有硬编码对象的数组显示在我的ng-repeat中。
$scope.deltagarelist = [{ label: "Nils", value: "3" }];
这是我的javascript / angular混合代码,用于从自动完成中获取选定的值并将其推送到我的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并且它添加到数组但是没有显示在我的重复中。 关于如何更改此代码以使其工作的任何想法? 或者我应该寻找更多“角度方式”的其他autcompletes?
答案 0 :(得分:2)
解决方案是向track by
添加ng-repeat
,以便AngularJS无需使用$$hashkey
来跟踪更改。
<div ng-repeat="val in deltagarelist track by val.value">
答案 1 :(得分:0)
$ ajax是异步的,这意味着在下载数据之前已经构建了NG-app。解决方法是使$ ajax同步,以便在下载数据之前一切都等待。