gpt4 book ai didi

javascript - 当对象传递回 Controller 函数时,AngularJS 正在删除我的 $_parent 属性

转载 作者:行者123 更新时间:2023-11-28 08:25:35 26 4
gpt4 key购买 nike

我有一个 JavaScript 对象的链接列表,我想从中生成面包屑。

因为我在递归指令中使用列表,所以我需要使用 $_prev 和 $_next (而不是 prev 和 next),这样我就不会收到有关循环引用的 JSON.parse 错误。

var myapp = angular.module('myApp', []);

var data00 = { id: 0, label: 'label_0' }
var data01 = { id: 1, label: 'label_1' }
var data02 = { id: 2, label: 'label_2' }

data00.$_next = data01;
data01.$_next = data02;

data01.$_prev = data00;
data02.$_prev = data01;

myapp.controller('testController', function($scope){
$scope.data = data02;
$scope.getBreadCrumbs = function(branch){
var crumbs = branch.label;
while(branch.$_prev){
branch = branch.$_prev;
crumbs = branch.label + ' \\ ' + crumbs;
}
return crumbs;
}
});

jsFiddle

在 Chrome 中一切正常,但在 IE8 中 getBreadCrumbs 函数 $_prev 属性不存在。

任何关于如何调试问题的意见将不胜感激。

最佳答案

我不确定你的 IE8 问题,但恕我直言,你的方法不是很好。我相信,通过使用更好的方法,您将减少 future 的开发/维护,并且很可能消除 IE8 的错误。我要做的就是把你所有的 dataxx对象放入单个数组,然后使用函数或 Angular Directive(指令)从该数组创建面包屑。

我强烈劝阻你不要做这样的事情

data00.$_next = data01;
data01.$_next = data02;

data01.$_prev = data00;
data02.$_prev = data01;

因为当您添加更多数据点时,不必要的工作就会增多。您可以使用数组的长度来查看您是否位于第一个/最后一个面包屑上,或者使用 $first $last Angular 为您提供的属性 ng-repeat

关于javascript - 当对象传递回 Controller 函数时,AngularJS 正在删除我的 $_parent 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22458469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com