2014-06-09 3 views
0

RactiveJS를 사용하면 라이브러리가 데이터의 변경을 감지하는 일부 핸들러를 추가했기 때문에 Ractive에 대한 데이터로 설정된 객체가 "live"가됩니다. 그러나, 나는이 말처럼, Ractive를 사용하지 않는 다른 위치에서 같은 개체를 사용하기를 원한다면 :"live"Ractive 데이터 객체를 죽입니다.

개체가 여전히 "라이브"때문에 objectForModuleA의 데이터에 영향을 줄 objectForModuleB 수정
var objectForModuleB = objectForModuleA.get(); 

. (.. 난 단지 데이터와 함께 일하고 있어요 없음 컴퓨팅 기능과 날짜 개체) 나는 핸들러를 제거하기 "는 캐릭터 라인 화 - 구문 분석을 수행하지"하여 해결 :

var objectForModuleB = JSON.parse(JSON.stringify(objectForModuleA.get())); 

반복해서 문서를 겪었합니다. 지금까지 나는 문서에서 이와 같은 것을 보지 못했습니다.

+0

당신은 어레이 수정 방법을 언급하고 있으며 옵션에서'magic : true'를 사용하고 있습니까? 객체의 구조 및 동작 방법에 대해 더 자세히 설명해 줄 수 있습니까? 난 단지 Ractive와 자바 스크립트 객체 참조 문제를 분리하려하고있다. – martypdx

+0

@martypdx 나는 마술 모드를 사용하지 않는다고 생각한다. – Joseph

답변

1

원래는 GitHub에 대한 답변입니다.

딥 클론 만 있으면됩니다. $.extend이 이에 적합한 도구입니다. JSON.parse(JSON.stringify())도 데이터에 따라 작동 할 수 있지만 느립니다. jQuery를 사용하지 않으려는 경우 자체 함수를 만들거나 jQuery의 핵심에서 가져올 수 있습니다.

만 더 ractive 인스턴스 간의 데이터 공유를 방지하려면, 당신이 사용할 수있는 옵션 기능 (v0.5.x) :

new Ractive({ 
    data: function() { 
     return { 
      x: 1, 
      y: 2 
     }; 
    } 
}); 

이 방법, 새로운 데이터는 각 ractive 예를 들어 작성됩니다.

관련 문제