如何在app / controller中要求widget / lib?

时间:2016-04-18 21:11:34

标签: widget appcelerator appcelerator-alloy

是否可以从appController访问widget / lib文件夹下的库文件?

我试过

require('./widgets/com.myWidget/lib/myLib')

require('widgets/com.myWidget/lib/myLib')

所有这些抛出错误:

[ERROR] :  Script Error Couldn't find module: ./widgets/com.myWidget/lib/myLib for architecture: i386

如何com.myWidget/lib/myLib.js中需要controllers/myCtrlr.js

或者所有lib代码是否只能在app/lib下生效?

app
|--assets
|--controllers
    |--myCtrlr.js
|--lib
|--models
|--styles
|--views
|--widgets
   |--com.myWidget
       |--assets
       |--controllers
       |--lib
           |--myLib.js
       |--models
       |--styles
       |--views

1 个答案:

答案 0 :(得分:1)

您无法直接从应用中访问widget lib。当您使用Widget.createWidget(widget_name, [controller_name], [params])创建窗口小部件的实例时,它会加载widget.js控制器。

我认为访问您的lib的最佳方式是在app/lib中添加它。因为从您的小部件中,您可以使用require(mylib)

访问您的lib

如果你真的想从你的小部件访问你的lib,你可以创建一个函数来导出它:

在widget.js中:

$.loadLib = function(){
 return require(WPATH(myLib));
};

在index.js中:

var w = Widget.createWidget('com.myWidget');
var myLib = w.loadLib(); //contains myLib located in com.myWidget/lib/