Javascript 数组中angularjs对象上没有$$hashKey
CreateCtrl中的$scope.create和链接到DOM的ListCtrl中的$scope.list 由于某些原因,$$hashKey未添加到所有对象。最后一个物体没有他。也就是说,如果我添加了3项,第三项减去$$hashkey(如果添加了另一项),则第三项显示为hashkey$$,第四项不显示 由于此错误,出现错误:[ngRepeat:dups] 按$index跟踪不提供。然后排序停止工作Javascript 数组中angularjs对象上没有$$hashKey,javascript,angularjs,dom,Javascript,Angularjs,Dom,CreateCtrl中的$scope.create和链接到DOM的ListCtrl中的$scope.list 由于某些原因,$$hashKey未添加到所有对象。最后一个物体没有他。也就是说,如果我添加了3项,第三项减去$$hashkey(如果添加了另一项),则第三项显示为hashkey$$,第四项不显示 由于此错误,出现错误:[ngRepeat:dups] 按$index跟踪不提供。然后排序停止工作 app.controller('CreateCtrl', function ($scope) {
app.controller('CreateCtrl', function ($scope) {
$scope.create = {a:1, b:2, c:3};
$scope.send = function () {
$scope.$emit('send', angular.copy($scope.create));
}
});
app.controller('ListCtrl', function ($scope, $rootScope) {
$scope.list = [];
$rootScope.$on('send', function (e, data) {
$scope.list.push(data);
});
});
您将传递一个包含三个元素的javascript对象{},然后将整个对象推送到$scope.list的第一个索引中
您的值位于data.a、data.b和data.c一件事,如果您的ListCtrl是CreateCtrl的子项,那么您应该使用$scope.$broadcast,然后是$scope.$on,这样您就不需要将$rootScope注入ListCtrl.ListCtrl中。没有CreateCtrlNo的子项,我的$scope.list应该是:$scope.list=[{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,b:3}]只有$$hashKey,而不是$$hashKey的最后一个元素,我的问题是数组看起来像这样:$scope.list=[{$$hashKey:'aa',a:1,b:2,c:3},{$$hashKey:'bb',a:1,b:2,c:3},{a:1,b:2,c:3}]后一个元素从来都不是$$hashKey我认为$$hashKey是由ngRepeat创建/添加的,可能需要使用$scope强制生成$digest。$apply
$rootScope.$on('send',function(e,data){
angular.forEach(data,function(value,key){
$scope.list.push(value); // or $scope.list[key] = value;
});
});