【问题标题】:Referencing a custom WinRT component breaks javascript class?引用自定义 WinRT 组件会破坏 javascript 类?
【发布时间】:2012-08-25 03:05:27
【问题描述】:

我有一个我正在开发的 javascript Windows Store 应用程序,我需要创建一个 WinRT 组件来进行一些处理。一旦我添加对该组件的引用,我就会收到一个 javascript 错误:

0x800a01bd - Javascript 运行时错误:对象不支持此操作。

这发生在带有以下内容的一行上:

engine = new MyApp.Engine();

定义:

WinJS.Namespace.define("MyApp", {
  Engine: WinJS.Class.define(function() {
    //constructor stuff
    //other stuff snipped for brevity
  }
});

我什至没有访问我的自定义组件中的任何代码,只是添加引用会导致它中断。有人遇到这个吗?谷歌搜索/Binging 没有任何帮助。

【问题讨论】:

  • 失败的堆栈叫什么?您的 WinRT 组件是否在您的类的构造函数中使用?实例化这个对象的js是不是在调用构造函数之前就包含进去了?
  • 哪个对象?在我的例子中,我所要做的就是引用 WinRT 组件,我不必调用它定义的任何方法。

标签: windows-8 microsoft-metro windows-runtime winjs


【解决方案1】:

我找到了答案。

所以在我的 Javascript 代码中,我有一个命名空间的声明。

在我的 WinRT C# 组件中,我使用了相同的命名空间。那个命名空间显然踩了我的 JS 命名空间声明。我从这里更改了我的 WinRT 组件:

namespace MyApp
{
  public sealed class SomeClass
  {
  }
}

到:

namespace MyAppUtils
{
  public sealed class SomeClass
  {
  }
}

现在一切都很好..所以,教训:如果您使用 JS 和自定义 WinRT 组件,您(显然)不能在两者中使用相同的命名空间。

【讨论】:

    猜你喜欢
    • 2016-08-04
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多