2

저는 JS 및 Appcelerator 티타늄을 처음 사용합니다.Appcelerator 티타늄 - 통과 js 변수

file1.js에서 다음
var my_val; 

, 나는 수정 : 나는 내 애플 리케이션에 MVC 모델을 구현하기 위해 노력하고 있어요,하지만 난 모델의 데이터에 액세스하는 데 문제가 다음 model.js에

을 my_val의 값 : 다른 파일 file2.js에서 다음

Ti.include("model.js"); 
my_val=5; 

:

Ti.include("model.js"); 
T.API.info(my_val); // the value I always get is "undefined" 

왜 file2.js이 감지되지 않았 음 file1.js 변경이 my_val을 완료 했습니까? 어쨌든 그것을 작동하게 만들 수 있습니까?

답변

1

당신은 당신이 얻을/당신의 app.js

// initialize your variable, you can update it as well with your custom value 
Titanium.App.Properties.setInt('my_value', 0); 

을이 같은 requirement.Do 무엇인가에 따라 당신의 변수를 설정할 수 있도록이 기능을 사용 Titanium Properties을 완수하려면이 값을 언제 어디를 얻을 수 있습니다 당신은 다음과 같이합니다 :

var myValue = Titanium.App.Properties.getInt('my_value'); 
0

이 때문에 어떤 문

Ti.include('model.js'); 

은 'model.js'파일의 코드를 다른 두 파일에 '복사하여 붙여 넣기'만하면됩니다. 'model.js'의 모든 변수는 'model.js'가 포함 된 파일에서 사용할 수 있습니다. 그러나 이는 변수 my_val의 복사본이 Ti.include ('model.js') 라인이있는 모든 파일에 공통적 인 변수가 아니라 'file2.js'에 사용 가능하다는 것을 의미합니다! 다른 파일은 첫 번째 파일의 줄을 두 번째 줄로 타이핑하는 것과 거의 비슷하지만 공통 파일을 포함하는 모든 파일을 연결하는 것은 아닙니다! 당신은 이미 'model.js'를 포함대로 그래서 어쩌면 대신

Ti.include('model.js'); 
Ti.API.info(my_val); 

당신이이 보는 시도 할 수 있습니다 'file1.js?'

Ti.include('file1.js'); 
Ti.API.info(my_val); 

또는 항상 Muhammad Zeeshan의 조언을 참조하여 Ti.App.Properties를 확인하십시오. 행운을 빕니다! :)

2

이 특정 문제에 관한 내 블로그 게시를보십시오.

blog.clearlyinnovative.com

당신이 당신의 app.js에서 두 파일을 포함하고 네임 스페이스에 변수를 추가 할 ; 이것은 더 깨끗하고 전역 범위를 오염시키지 않습니다. model.js에서

var myApp = {}; 
Ti.include("model.js"); 
Ti.include("file2.js"); 

는 file2.js에서

var myApp.model = {}; 
myApp.model.my_val = 100; 

이 같은 일을 같은 것을 할; model.js를 다시 incude 할 필요가 없으며 값은 사용자의 네임 스페이스에 설정되어 명확하게 정의됩니다.

Ti.API.info(myApp.model.my_val); 
관련 문제