我在我的情况下使用角度,但这也是一个普遍的问题。此外,我也知道其他前端ORM解决方案,如js-data和restacular,但这是一个不同的故事。
给定由People
个实例组成的Person
集合:
[
{ 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);
});
}
}
也许这种封装方法很糟糕......我不确定。我让a plnkr尝试创建一个通过双向绑定继承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>
父控制器内的
this.info = {};
//setup circular reference
this.info.info = this.info
在解决循环JSON字符串化问题时,如何在ORM中保留循环引用的奢侈性?
答案 0 :(得分:1)
您需要编写自己的stringify,将对象拉出到引用数组并用引用数组键替换它们。或者您可以使用我认为有用的http://devblogs.nvidia.com/parallelforall/egl-eye-opengl-visualization-without-x-server/库
另外,如果你有兴趣尝试自己做这个jsog答案