我在appcelerator中构建一个简单的应用程序。
我使用此代码创建一个带有 tss 文件样式的标签。
function createHeader(headerText){
var heading = Ti.UI.createView({
backgroundColor : "#0c7b84"
});
var headingText = $.UI.create("Label", {
classes: 'headerTableLabel'
});
headingText.text = headerText;
heading.add(headingText);
return heading;
}
headerTableLabel类在app.tss文件中声明
".headerTableLabel" : {
color : "#FFF",
font : {
fontSize : "13pt",
fontWeight : "Bold"
},
textAlign: "left"
}
现在我想在我的Global.js中插入createHeader函数,所以在这个模式下我可以从我的应用程序的所有控制器中调用这个函数。
但如果我尝试在Global.js文件中剪切并复制此函数(可行),我在 $ .UI.create
时出错消息:未捕获的ReferenceError:$未定义 来源:var headingText = $ .UI.create(" Label",{ [错误]:V8异常:在common / Globals.js发生异常:5:未捕获的ReferenceError:$未定义
答案 0 :(得分:0)
控制器之外不存在$
范围。
您正尝试在控制器范围之外使用类。这不起作用,因为tss
不在应用中。编译期间,tss
和xml
文件都编译为单个js
文件。它还会查看控制器中的所有$
代码,并为其附加正确的样式,因此您无需手动将其复制粘贴到动态创建视图中。
因为你的文件在控制器之外,它也可以在以后的体育场调用,并且编译器不知道从哪里获取tss
,因为在每个控制器中你都可以覆盖并应用自定义样式。
我建议仅为视图创建单独的控制器,或者手动将样式添加到Globals.js
文件中的动态创建的视图中。我写过一篇关于如何做到这一点以及如何与之交谈的博客。在我的应用程序中,我尽量避免动态创建任何视图。 https://medium.com/all-titanium/enhancing-titanium-organising-the-big-view-files-20c1237223f2#.3oaij58n9