如何解决加速器钛-传递js变量
| 我是JS和Appcelerator Titan的新手。我正在尝试将MVC模型实现到我的应用程序,但是在访问模型中的数据时遇到问题: 在model.js中:var my_val;
然后在file1.js中,我修改了my_val的值:
Ti.include(\"model.js\");
my_val=5;
然后在另一个文件file2.js中:
Ti.include(\"model.js\");
T.API.info(my_val); // the value I always get is \"undefined\"
为什么file2.js没有检测到file1.js对my_val所做的更改?反正有使其工作吗?
解决方法
看看我关于此特定问题的博客文章。
blog.clearlyinnovative.com
您想将两个文件都包含在app.js中,并将变量添加到名称空间中;这样比较干净,不会污染全局范围。
var myApp = {};
Ti.include(\"model.js\");
Ti.include(\"file2.js\");
在model.js中做这样的事情
var myApp.model = {};
myApp.model.my_val = 100;
在file2.js中做这样的事情;无需再次包含model.js,该值是在您自己的命名空间中设置的,并且已明确定义
Ti.API.info(myApp.model.my_val);
, 如果要完成此功能,请使用Titanium Properties,以便您可以根据需要获取/设置变量。在app.js中执行以下操作
// initialize your variable,you can update it as well with your custom value
Titanium.App.Properties.setInt(\'my_value\',0);
您可以在任何需要的地方获得此值,如下所示:
var myValue = Titanium.App.Properties.getInt(\'my_value\');
, 这是因为声明
Ti.include(\'model.js\');
要做的只是将\'model.js \'文件中的代码“复制粘贴”到其他两个文件中。 \'model.js \'中的所有变量将可用于其中包含\'model.js \'的文件。但这仅意味着\'file2.js \'可以使用变量my_val的副本,而不是所有具有Ti.include(\'model.js \')行的文件都通用的变量!另一个文件中的文件与将第一个文件的行键入第二个文件的行几乎相同,但是它绝不连接包含公共文件的所有文件!
所以也许代替
Ti.include(\'model.js\');
Ti.API.info(my_val);
您可以尝试这样做,因为您已经在\'file1.js ?? \'中包含了\'model.js \'
Ti.include(\'file1.js\');
Ti.API.info(my_val);
或者,您始终可以按照Muhammad Zeeshan的建议进行操作,并查看Ti.App.Properties。祝好运! :)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。