2012-08-28 12 views
0

어떻게 작동합니까? 이 코드를 실행하면requireJS - 매개 변수 대체

var param = 'someFunction'; 

require('views/MyView').[param](); 

, 나는

SyntaxError: missing name after . operator 
require('views/MyView').[renderMethod](); 

답변

3

.[] 같은 일의 친절 다음과 같은 오류가 발생합니다. 당신이 원하는 무엇

require('views/MyView')[renderMethod]();

require(...) 기본적 속성과 기능을 가진 객체해야 내 보낸 모듈을 반환 할 것이다.

자, 우리가 가정 해 봅시다 :

var obj = { 
    foo: function() { alert('foo'); } 
    bar: function() { alert('bar'); } 
} 

그런 다음 당신이 할 수 있습니다 :

obj.foo();이 - 동적 이름 고정 인수

obj['foo'].apply(this, args) - 기능이 고정 된 이름

obj['foo'](); 전화 - 동적 함수 이름 및 인수

편집 :

내가 발견 한 가지 더 :

requirejs에서

, 당신은 이런 식으로 뭔가를 할 때

define (require, function() { 
    x = require('views/Foo'); 
    x.bar(); 
} 
당신 '이 필요합니다 코드를 분석하여 결정합니다

RequireJS view/Foo '모듈을 열고 코드를 실행하기 전에로드되었는지 확인하십시오. 동적 모듈을로드 할 경우

그러나, 당신의 모듈이로드 될 때 알림이 미리로드 어떤 모듈을 사전에 알 수 없습니다, 그래서 당신은 콜백을 사용해야합니다 :

define (require, function() { 

    require('views/' + viewName, function(myView) { 
     myView.bar(); // or 
     myView[dynamicFunc](); // ... 
    }); 
}