나는 캔버스에 라파엘 요소 객체 잔뜩 있는데과 같이, 각각의 데이터를 연결 한 :Raphael.js는 element.data() 메소드로 설정된 요소의 데이터를 어디에서 저장합니까?
위의 예에서element.data('dataVal',x);
, 나는 X가 저장되는 위치를 알고 싶습니다. 나는 Raphael.js에 대한 소스를 통해 찾아 봤는데이 부분에 신경을 집중했다 :
elproto.data = function (key, value) {
var data = eldata[this.id] = eldata[this.id] || {};
if (arguments.length == 1) {
if (R.is(key, "object")) {
for (var i in key) if (key[has](i)) {
this.data(i, key[i]);
}
return this;
}
eve("raphael.data.get." + this.id, this, data[key], key);
return data[key];
}
data[key] = value;
eve("raphael.data.set." + this.id, this, value, key);
return this;
};
그래서, 내 직감 'eldata'은 라파엘 용지 객체의 속성이 있다는 것이다 그 'eldata'포함 각 라파엘 엘레멘트에 대한 객체를 저장하며,이 객체에 데이터가 저장됩니다.
본질적으로 내 질문은 : 일단 Raphael 캔버스를 만들고 요소를 추가하고 해당 요소에 데이터를 추가하면 어떻게 데이터에 액세스 할 수 있습니까 (Raphael 함수를 사용하지 않고)? 나는 R.eldata (R은 Raphael canvas 임)를 찾는 것과 같은 간단한 것을 시도해 봤지만 유익하지 못했습니다.
귀하의 도움에 감사드립니다!
엄밀히 말하면, * local * 변수입니다. –
@RobW 참. 나는 단지 "비공개"가 "지역"보다 "접근하기 어려운"지점을 더 잘 만든다고 생각합니다. 여전히 업데이트되었습니다. –
고마워요 조나단. 나는 비교적 새로운 자바 스크립트입니다. 내 자신의 학습을 위해, 엘파 타는 Raphael 종이 객체의 메소드 또는 요소 객체의 메소드 (또는 둘 다?)의 범위에있다. 필자의 일반적인 혼란은 eldata가 선언 된 wrapper 함수가 한 번만 실행된다는 점을 중심으로하고있다 - 그래서 모든 요소의 범위 내에서 생성 된 Raphael canvas 객체 당 하나의 eldata 인스턴스 만 존재한다. 또는 각각에 대한 eldata의 인스턴스가있다. 주어진 캔버스의 요소? 감사. –