Typescript 在NativeScript UI声明中使用外部模块

Typescript 在NativeScript UI声明中使用外部模块,typescript,telerik-appbuilder,nativescript,Typescript,Telerik Appbuilder,Nativescript,[从NativeScript Google组交叉发布以获得可见性。] 在阅读了TJ Van Toll的一篇文章后,我开始为一个我想在XML UI定义中使用的UI组件创建自己的模块。该组件是一个围绕本机组件的JavaScript包装器,这一事实稍微复杂一些。我在项目中使用的是TypeScript,所以包装器使用了a.d.ts。以下是我所拥有的: app/modules/wrapper/wrapper.d.ts: app/modules/wrapper/wrapper-common.ts: app/

[从NativeScript Google组交叉发布以获得可见性。]

在阅读了TJ Van Toll的一篇文章后,我开始为一个我想在XML UI定义中使用的UI组件创建自己的模块。该组件是一个围绕本机组件的JavaScript包装器,这一事实稍微复杂一些。我在项目中使用的是TypeScript,所以包装器使用了a.d.ts。以下是我所拥有的:

app/modules/wrapper/wrapper.d.ts:

app/modules/wrapper/wrapper-common.ts:

app/modules/wrapper/wrapper.{iOS,android}.ts:

app/modules/wrapper/package.json:

我有点不确定模块的命名约定,即它应该是最深的目录名,还是像tns_模块中包含的UI模块那样是完整路径?但我认为其余部分是正确的。在XML中,我有:

app/main-page/main-page.xml:

当前,当执行此代码时,我在component-builder.js中遇到一个异常,因为它无法创建模块。但是,在调用堆栈上,我在iOS运行时内的本机方法u executeModule中。一个无关紧要但值得解决的问题是,作为用户,我们能否将Xcode附加到设备并调试运行时?这是在运行时的require.js中,所以我不确定这是否可能。如能提供任何帮助/建议/更好的做法,我们将不胜感激。这件事让我头痛了好几天。

接了电话

嗨,克里斯

命名约定非常简单:

仅代码组件无XML:

在本例中,我们将需要指定路径的模块/包装器,并将在返回的导出中查找包装器,如果找到,将使用new创建—您需要不带参数的构造函数

XML及其代码:

在本例中,我们将在modules/Wrapper文件夹modules/Wrapper/Wrapper.XML中查找名为Wrapper的XML文件,如果找到,我们将就地加载文件内容。该代码将用作加载的XML的代码隐藏

如果你有任何问题,请告诉我

谢谢

declare module "wrapper" {
    import view = require("ui/core/view");

    export class Wrapper extends view.View {
        ...
    }
}
import definition = require("./wrapper");

export class Wrapper extends view.View implements definition.Wrapper {
   .....
}
import common = require("./wrapper-common");

export class Wrapper extends common.Wrapper {
    .....
}
{ "name" : "wrapper",
  "main" : "wrapper.js" }
<Page xmlns="http://www.nativescript.org/tns.xsd"
      xmlns:myns="modules/wrapper"
      loaded="pageLoaded" >
    <myns:Wrapper>

    </myns:Wrapper>
</Page>
... 
xmlns:myns="modules/wrapper" 
... 
<myns:Wrapper 
... 
... 
xmlns:myns="modules/wrapper" 
... 
<myns:Wrapper 
...