2012-02-23 4 views
5

그래서 첫 번째 질문에 대한 답을 찾을 수 없었습니다. 내 첫 번째 질문을하기에 충분할 이유가있을 수 있습니다. 답변이 backbone.js의 범위를 벗어나는 경우 사과드립니다.backbone.js에서 전역 변수 사용

backbone.js 앱에서는 여러 함수에서 여러 변수에 액세스해야하므로 일부 전역 변수 설정을 사용해야합니다.

현재 솔루션이 허용되는지/좋은 습관인지 궁금합니다. (IDEA) 내 IDE는 아니라고 생각하는 것 같다

var MyModel = Backbone.Model.extend({ 

initialize:function(){ 
    var myGlobalVar, myOtherGlobalVar;//marked as unused local variable 
}, 

myFunction:function() {   
     myGlobalVar = value;//marked as implicitly declared 
     model.set({"mrJson": {"email": myGlobalVar}}); 
     model.save(); 
    }); 
    } 
}, 

myOtherFunction:function() {   
     myOtherGlobalVar = otherValue;//marked as implicitly declared 
     model.set({"mrJson": {"email": myGlobalVar, "other": myOtherGlobalVar}}); 
     model.save(); 
    }); 
    } 
} 
} 

내가 암시 적으로 선언 전역을 선언했지만, 그것은 그들이 인접 기능에서 액세스 할 수없는 결과.

backbone.js에서 이러한 전역 변수를 처리하는 적절한 방법이 있습니까?

답변

14

현재 변수를 선언하는 방법은, 그들은 MyModel 범위를 반대하기보다는, 범위를 초기화하는 기능에 있습니다. 변수를 모델 변수 (모든 객체 함수에 액세스 가능)로 정의하려면 다음을 수행하십시오.

var MyModel = Backbone.Model.extend({ 

myGlobalVar: null, 
myOtherGlobalVar: null, 

initialize:function(){ 
    console.log(this.myGlobalVar) 
}, 
... 
+0

고맙습니다! 그 구문은 내가 찾고 있던 구문이 명확하지 않다. – Sephie

+0

나는 비슷한 상황에 직면 해있다. 위의 해결책이 괜찮은 것처럼 보이지만 내 문제는 백본 작동 방식보다 js 파서가 어떻게 작동하는지 이해하는 데 더 많은 노력을 기울여야한다. jsbin 비 기능적 코드 예제를 작성했다. 코드가 컴파일 될 기능을합니다.) 링크 http://jsbin.com/tufeh/1/입니다. dropfrom 호출 될 때 selestrt 값을 가져옵니다 (유닉스 타임 스탬프입니다 ...) changefrom 호출 될 때 (변경 이벤트) selestrt는 정의되지 않았습니다. 이런 상황에서 내가 뭘 할 수 있을까? 네가 그림을 가져 왔으면 좋겠어. –