我很擅长使用现有数据,但我还不是编辑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 ..
答案 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);
});
}