2012-05-11 4 views
0

백본 및 요구 사항이 포함 된 단일 페이지 앱을 제작하고 있습니다. 지금은, 내 모듈 파일에서 새 인스턴스를 반환으로 파일을 종료했습니다 들어requirejs를 사용하여 모듈 인스턴스를 만들고 다른 모듈로 전달하는 방법은 무엇입니까?

: 나는이 컬렉션의 initialize 메소드에 인수를 전달했다 때까지

return new moduleName; 

이 확인했다. 인스턴스가 생성 될 때 initialize가 호출되기 때문에 return 문에서 "new"를 제거합니다.

return mymoduleName; 

그리고 내 라우터에서 매개 변수를 사용하여 컬렉션을 인스턴스화 : 이것은 참으로 "도서관"의 인스턴스 생성

myCollection = new library({paramname: "value"}); 

-의 블록을 정의,하지만 난 그것을 어떻게 전달합니까 내 라우터에 도입 컬렉션을 그것을 렌더링하는 책임이있는 뷰? 어떤에서 (이 컬렉션 클래스에서 "새로운"을 멀리 복용하기 전에 일

this.collection = library; 
_.bindAll(this, 'render'); 
this.collection.bind('reset', this.render); 

:

내보기 클래스는 정의 블록에 같은 의존성을 가지고 있으며 초기화에 나는 컬렉션의 재설정에 바인딩 회고는 전혀 의미가 없습니다!)하지만 뷰가 렌더링되지는 않습니다. 라우터에서 인스턴스화 되었기 때문입니다. 뷰에 동일한 인스턴스를 전달하려면 어떻게해야합니까?

답변

1

컬렉션을 초기화 메소드에 설정하지 마십시오. 뷰 (인스턴스, 라우터)를 인스턴스화 할 때마다.

var myCollection = new library({paramname: "value"}); 
var myView = new myCustomView({ 
    collection: myCollection 
}); 

myCollection 당신이뿐만 아니라 다른 곳에서 접근 할 필요가 변수 인 경우에는 라우터 (myRouter.myCollection = ...), 당신이 전역 개체를 보유 모델 (MyAppGlobals를) 만들 수에 설정할 수 있습니다 또는 당신은 간단하게 할 수 전역 변수 (권장하지 않음).

+0

덕분에 다음과 같이 작업하게되었습니다. 실제로 이것이 정확히 무엇인지 말씀해 주시겠습니까? library = new library ({paramname : "value"}); myView = 새보기 ({컬렉션 : 라이브러리}); 보기의 초기화 : 초기화 : function (opts) { \t this.collection = opts.collection; } – wannabeartist

+0

기본적으로 "초기화 할 컬렉션을 설정하지 마십시오"라는 구문이 약간 혼동 스럽습니다 - 생성자 params가 처리되는 곳이 아닌가? – wannabeartist

+0

Initialization에서 'this.collection = opts.collection'을 수행 할 필요가 없습니다. 백본 설명서를 보면 "새보기를 작성할 때 전달한 옵션이 미래에 this.options로보기에 첨부됩니다 전달되는 경우 model, collection, el, id, className, tagName 및 특성과 같이 뷰에 직접 첨부되는 몇 가지 특수 옵션이 있습니다. " (http://documentcloud.github.com/backbone/#View-constructor) – slurmomatic

관련 문제