开发者

Appcelerator titanium - passing js variables

I am new to JS and Appcelerator titanium. I am trying to implement the MVC model to my app, but I have a problem accessing the data in the model:

in the model.js:

var my_val;

then in file1.js, I modified the value of my_val:

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

then in another file file2.js:

Ti.include("model.js");
T.API.info(my_val); // the开发者_JAVA百科 value I always get is "undefined"

why is file2.js not detecting the change file1.js has done to my_val? Is there anyway to make it work?


take a look at my blog posting regarding this particular problem.

blog.clearlyinnovative.com

you want to include both files in your app.js and add the variable to your namespace; this is cleaner and doesn't pollute the global scope.

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

in model.js do something like this

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

in file2.js do something like this; no need to incude model.js again, the value was set in your own namespace and is clearly defined

Ti.API.info(myApp.model.my_val);


If you want to get this functionality done use Titanium Properties so that you can get/set your variable as per requirement.Do something like this in your app.js

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

You can get this value any where you want like this:

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


This is because what the statement

Ti.include('model.js'); 

does is to just sort of 'copy-paste' the code in your 'model.js' file into the other two files. All the variables in 'model.js' will be available to the file in which you included 'model.js'. But this only means that a copy of the variable my_val is made available to 'file2.js' not a variable that is common to all files that have the Ti.include('model.js') line!Including a file in another is pretty much the same as typing out the lines of the first file into the second but it in no way connects all files that include a common file! So maybe instead of

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

you can this try this seeing as you have already included 'model.js' in 'file1.js??'

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

OR you can always go with Muhammad Zeeshan's advice and check out Ti.App.Properties. Good Luck! :)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜