Javascript Taming在客户端ORM中有许多/belongstone循环引用

Javascript Taming在客户端ORM中有许多/belongstone循环引用,javascript,angularjs,orm,circular-reference,Javascript,Angularjs,Orm,Circular Reference,我在我的例子中使用了angular,但这也是一个一般性的问题。我也知道其他前端ORM解决方案,如js数据和restacular,但情况不同 给定由多个Person实例组成的People集合: [ { name: "Bob" }, { name: "Dave" }, { name: "Sarah" } ] 每个Person实例如何能够(方法)将具有继承属性的自身新实例推送到其父集合中?假设一个Person实例如下所示: { name: "Bob", par

我在我的例子中使用了angular,但这也是一个一般性的问题。我也知道其他前端ORM解决方案,如js数据和restacular,但情况不同

给定由多个
Person
实例组成的
People
集合:

[
    { name: "Bob" },
    { name: "Dave" },
    { name: "Sarah" }
]
每个
Person
实例如何能够(方法)将具有继承属性的自身新实例推送到其父集合中?假设一个
Person
实例如下所示:

{
    name: "Bob",
    parent: [ /* circular reference to collection */ ],
    extend: function(attrs) { /* returns new object */ },
    create: function(attrs) {
        var self = this;
        //call factory method to create object
        var person = self.extend(attrs);
        //some http call to persist to backend
        .then(function() {
            //push new instance to parent so it's rendered in the view model
            self.parent.push(person);
        });
    }
}
也许这种封装方法不好……我不确定。我试图创建一个通过双向绑定继承JSON字符串化循环引用(不好)的指令

指令

angular
    .module("app", [])
    .directive("appDirective", function() {
        return {
            scope: { data: "=appDirective" },
            bindToController: true,
            controllerAs: "vm"
        };
    });
html

<div app-directive="{foo: 'bar', info: vm.info}">{{vm.data}}</div>

如何在ORM中保留循环引用的奢侈,同时避开循环JSON stringify问题?

您需要编写自己的stringify,将对象拉到引用数组中,并用引用数组键替换它们。或者你可以使用我发现有用的库


此外,如果您有兴趣自己尝试,则需要编写自己的stringify,将对象拉到引用数组中,并用引用数组键替换它们。或者你也可以使用我发现有用的图书馆,如果你有兴趣自己尝试,很高兴它能帮上忙。在核心javascript中似乎应该考虑一些东西(或者至少是角度),但事实就是这样。
this.info = {};
//setup circular reference
this.info.info = this.info