2013-07-09 1 views
0

모듈을 사용할 플러그인을 작성했습니다. 기본적으로 추가 기능을 제공하기 위해 코드에 추가 할 수있는 기능입니다.js : 변수에서 first-class 객체와 문자열을 모두 반환하십시오.

플러그인에서 이러한 모듈을 호출하는 함수입니다. 이전에,이처럼 그들을 불렀다 :

processInstance($(doc).find('[data-bcp-crumbs]'), crumbs); 
processInstance($(doc).find('[data-bcp-copyright]'), copyright); 
processInstance($(doc).find('[data-bcp-activenav]'), activeNav); 

각 행의 마지막 부분은 processInstance 스크립트 내에서 호출되는 함수의 이름입니다. 그래서 저는 함수의 이름을 각 줄에있는 문자열과 일류 객체로 보았습니다. 나는 이런 식으로 그것을 단순화하고 싶습니다 :

for (var i=0; i>module.length;i++) { 
    processInstance($(doc).find('[data-bcp-'+module[i].toLowerCase()+']'), window[module[i]]); 
} 

모듈 배열은 실제 모듈 코드의 각 인스턴스 이후에 추가됩니다. 나는 이렇게하고있다 :

module.push('crumbs'); 

[module [i]] 창이 정의되지 않은 상태로 돌아 오기 때문에 이것은 작동하지 않는다.

이 코드를 작성하려면 어떻게해야합니까? http://jsfiddle.net/michaeljimmy/U8anp/1/

+0

무엇이 문제입니까? – jeffo

+0

실제 질문을 제 질문에 추가 했습니까? :) –

+0

모든 관련 코드를 게시하십시오! – alfasin

답변

0

가 내 동료는이 질문에 대한 답을 찾아 내게 도움 :

여기에 삽입하는 간단한 모듈 전체 플러그인의 jsfiddle 예입니다. 첫째로, for 루프에서 에러를 발견했습니다. 대신 <이 (가)있었습니다. 그건 도움이되지 않았어. :)

코드의 개념이 정확했습니다. 문제는 범위였습니다. jsfiddle을 보면, 내가 호출하려고했던 기능을 포함하여 모든 것이 인클로저에 있음을 알 수 있습니다. 따라서 윈도우가 함수에 액세스 할 수있는 방법이 없었습니다. 우리는 몇 가지 간단한 변화를 만들었습니다. 함수 이름은 무엇

module.push 함께 첫째, ('부스러기') 또는, 우리는 추가 :

functions.crumbs = crumbs; 

을이어서 대신 창을 사용하여 여기서 모듈은 [I]는, 우리

사용
functions[module[i]] 

인클로저가 없으면 [module [i]] 창은 정상적으로 작동했을 것입니다.

관련 문제