Angularjs - JSON对象编辑

时间:2013-12-17 03:45:37

标签: javascript json angularjs

我很擅长使用现有数据,但我还不是编辑JSON对象的专家,所以这里的一些帮助对我来说会有很多帮助。据我所知,这可能是一个基本问题,但我在问,因为我不知道。

如何更新JSON字符串中的值,如下所示?这是一个kineticjs对象,我需要在重新生成舞台之前禁用可拖动元素。

我根据下面的一些输入创建了一个小提琴,但我没有成功: http://jsfiddle.net/8Y6zZ/5/

例如,我想在"draggable": false,的任何地方设置"draggable": true, ...我怎么能用javascript(我在angularjs工作)这样做。

{
    "attrs": {
        "width": 1276,
        "height": 660
    },
    "className": "Stage",
    "children": [
        {
            "attrs": {},
            "className": "Layer",
            "children": [
                {
                    "attrs": {
                        "x": 0,
                        "y": 0,
                        "draggable": false,
                        "name": "brochure-1.png"
                    },
                    "className": "Image"
                },
                {
                    "attrs": {
                        "x": 999,
                        "y": 288,
                        "draggable": true,
                        "name": "sample1.png",
                        "rotation": 0,
                        "scaleX": 1,
                        "scaleY": 1,
                        "offsetX": 0,
                        "offsetY": 0,
                        "skewX": 0,
                        "skewY": 0
                    },
                    "className": "Image"
                },
                {
                    "attrs": {
                        "x": 301,
                        "y": 115,
                        "draggable": true,
                        "name": "sample2.png",
                        "rotation": 0,
                        "scaleX": 1,
                        "scaleY": 1,
                        "offsetX": 0,
                        "offsetY": 0,
                        "skewX": 0,
                        "skewY": 0
                    },
                    "className": "Image"
                }
            ]
        }
    ]
}

与此问题相关,有没有很好的方法从“基本”JSON重建JSON对象...我想我要问的是这个...如果后端的开发人员没有好办法翻译数据,他们传递一个组织严重的JSON对象,有没有办法操纵对象重组它,以便它可以很好地用于angularjs ..

2 个答案:

答案 0 :(得分:1)

使用有角度的foreach。然后,您只需将其指向对象中的子项列表即可。像这样的东西应该用你的JSON对象的名字替换YOUR_OBJECT。

angular.forEach(YOUR_OBJECT.children.children, function(obj){
  obj.attrs.draggable = false;
});

答案 1 :(得分:1)

在json结构上不确定,但是如果你可能有一堆嵌套的子对象,你可以使用简单的递归来遍历所有的子代......就像这样:

function setDraggable(obj) {
  if(obj.attrs) {
    obj.attrs.draggable = false;
  }
  if(!obj.children) {
    return;
  }
  angular.forEach(obj.children, function(o) {
    setDraggable(o);
  });
}