2014-01-15 2 views
0

저는 매우 기본 템플릿 시스템과 고민 중입니다. 쉽게 것 같은Javascript에서 일치하는 문자열을 변수로 어떻게 실행할 수 있습니까?

some useless text here but i want to replace %% this %% with the variable: object.this 

이 보인다,하지만 난 그것을 알아낼 수 없습니다 :

이 가져 가라. 내 코드는 다음과 같습니다.

function loadTemplate(element, object) { 
    var regex = /%% (.*) %%/; 
    return $(element).html().replace(regex, eval("object.$1")); 
} 

나는 여러 가지 시도를했습니다. 현재 평가는 undefined을 반환합니다. eval("$1")을 시도하면 알려지지 않은 참조 오류가 발생하고 $1이 정의되지 않았 음을 알 수 있습니다.

내가 뭘 잘못하고 있는지 잘 모릅니다. 도와주세요.

+1

'replace'는 콜백 함수를 사용하므로 'eval'이 필요하지 않습니다. 너의 논리를 거기해라. – elclanrs

+0

@elclanrs, 그냥 변수로 문자열을 실행하려면'eval'을 사용하고 있습니다. – Rob

+0

내 대답보기, 당신은 그것을 필요가 없습니다. 대괄호 표기법을 사용할 수 있습니다. – elclanrs

답변

3

evalreplace이 콜백 기능을 사용하기 때문에 필요하지 않습니다. 너의 논리를 거기해라. 첫 번째 매개 변수는 일치하는 하위 문자열이고, 두 번째 매개 변수는 첫 번째 캡처 그룹 일치입니다. 대괄호 표기법을 사용하면 문자열로 객체의 키에 동적으로 액세스 할 수 있습니다.

+0

아마도 나는 정말로 빨기는하지만, 그것이 올바른 것이 맞는지는 알지만, 여전히 '정의되지 않은'값을 반환합니다. 또한, .replace (regex, object [ "$ 1"]'는 대답과 동일 할 것입니까? – Rob

+0

대체 토큰은 문자열로 'replace' 메소드로 전달됩니다. 'replace '의 두 번째 매개 변수는 문자열이나 함수 중 하나이다.'object [ "$ 1"]'문자 그대로'object'에서'$ 1' 키를 찾는다. – elclanrs

+0

괜찮습니다. 또한 정의되지 않은 반환에 관한 내 이전 의견을 무시하십시오.이 완벽하게 작동합니다. 감사합니다! - 편집 : 아직 대답을 수락하려면 2 분 기다려야합니다. – Rob

관련 문제