Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试使用自动完成的推送添加对象时,缺少$$Hashkey_Javascript_Jquery_Angularjs_Autocomplete - Fatal编程技术网

Javascript 尝试使用自动完成的推送添加对象时,缺少$$Hashkey

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({

带有硬编码对象的数组显示在my ng repeat中

  $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()。谢谢你的帮助。