2013-12-17 2 views
1

나는 기존 데이터를 사용하는 데는 능숙하지만 JSON 개체를 편집하는 전문가는 아니기 때문에 여기서는 약간의 도움이 필요하다. 내가 알기에 이것은 기본적인 질문이 될 수 있지만 내가 모르기 때문에 묻고있다.Angularjs - JSON 개체 편집

아래와 같은 JSON 문자열의 값을 어떻게 업데이트합니까? 무대를 다시 생성하기 전에 드래그 가능한 요소를 비활성화해야하는 것은 kineticjs 객체입니다.

나는 다음과 같은 몇 가지 입력을 기반으로 바이올린을 만들었지 만 나는 그것을 성공하지 오전 : http://jsfiddle.net/8Y6zZ/5/

예를 들어, 내가 자바 스크립트로 그렇게 할 수있는 방법을 ... 나는 "draggable": true,이 곳 "draggable": false,을 설정하려는 (나는 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 객체를 전달하는 좋은 방법이 없기 때문에 객체를 조작하여 구조를 조정하여 각도 구조에서 잘 사용할 수 있습니다.

답변

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

각도의 foreach를 사용하십시오. 그런 다음 개체의 자식 목록으로 이동하면됩니다. 이런 식으로 YOUR_OBJECT를 JSON 객체의 이름으로 바꿔야합니다.

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

I을 내가 따를 지 확신하지 못한다. 나는 그것을 시험해보기 위해 바이올린을 만들었지 만, 아무 것도 얻지 못하고있다. http://jsfiddle.net/8Y6zZ/5/ – GRowing