2013-12-17 96 views
1

我很擅長使用現有的數據,但我不是編輯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中使用。

回答

1

不知道的JSON結構,但如果你可能有一大堆的子對象嵌套,你可以使用簡單的遞歸遍歷所有孩子下降..這樣的事情:

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

其實,是的,因爲它是一個kineticjs階段,可能無限層和對象遞歸組合是有道理的。我創建了一個小提琴來測試http://jsfiddle.net/BpmTU/4/,你的建議似乎很好。謝謝。 – GRowing

1

使用angular的foreach。然後,您只需將其引導至您的對象中的兒童列表。像這樣的東西應該用你的JSON對象的名字替換YOUR_OBJECT。

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

我我不確定我是否遵循。我創建了一個小提琴來嘗試它,但我沒有得到任何東西http://jsfiddle.net/8Y6zZ/5/ – GRowing