0

我正在 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", { [ERROR]:V8Exception:异常发生在 common/Globals.js:5:未捕获的 ReferenceError:$ 未定义

4

1 回答 1

0

$范围不存在于控制器之外。

您正在尝试使用控制器范围之外的类。这不起作用,因为tss它不在应用程序中。tss和文件在编译期间都xml被编译成一个js文件。它还会查看$控制器中的所有代码并为其附加正确的样式,因此您不必手动将其复制粘贴到动态创建的视图中。

因为你的文件在控制器之外,它也可以在以后的体育场被调用,编译器不知道从哪里得到tss,因为在每个控制器中你都可以覆盖和应用自定义样式。

我建议只为视图制作一个单独的控制器,或者手动将样式添加到Globals.js文件中动态创建的视图中。我写了一篇关于如何做到这一点以及如何与之交谈的博客。在我的应用程序中,我尽量避免动态创建任何视图。https://medium.com/all-titanium/enhancing-titanium-organising-the-big-view-files-20c1237223f2#.3oaij58n9

于 2016-06-16T11:31:23.820 回答