Ibm mobilefirst 覆盖worklight.js

Ibm mobilefirst 覆盖worklight.js,ibm-mobilefirst,Ibm Mobilefirst,我正在使用IBM MobileFirst平台开发一个应用程序,发现Worklight.js文件存在问题。Worklight.js扩展了函数原型,定义了几种方法,如bind、curry、wrap等 我的应用程序是用aurelia框架构建的,在将框架升级到最新版本后,我遇到了一个与绑定扩展相关的棘手问题 如果我在worklight.js中对绑定扩展进行注释,那么一切看起来都像一个魔咒(不知道为什么worklight实现了它的绑定版本) Worklight.js文件似乎在构建时添加到wlapp包中。是

我正在使用IBM MobileFirst平台开发一个应用程序,发现Worklight.js文件存在问题。Worklight.js扩展了函数原型,定义了几种方法,如bind、curry、wrap等

我的应用程序是用aurelia框架构建的,在将框架升级到最新版本后,我遇到了一个与绑定扩展相关的棘手问题

如果我在worklight.js中对绑定扩展进行注释,那么一切看起来都像一个魔咒(不知道为什么worklight实现了它的绑定版本)

Worklight.js文件似乎在构建时添加到wlapp包中。是否有一种方法可以覆盖此文件,以便在每次生成应用程序时不必修改.wlapp文件


谢谢

对于您提出的特定问题,直接回答是:不,没有提供覆盖worklight.js的方法。这是MobileFirst平台客户端运行所需的核心JavaScript代码,因此,用户没有任何方法来修改它-它在构建过程中被注入到您的应用程序(即WLAPP文件)中

我不知道Aurelia有任何具体的问题,但在过去我确实看到过这样的情况,即使用两种不同框架(例如MobileFirst Platform/Worklight和其他框架)的应用程序彼此“争斗”,因为它们都想实现彼此不兼容的扩展-在这种情况下,一个框架或另一个框架通常需要更改以适应另一个框架


如果你是一个有付费支持的客户,我建议你开一个PMR,这样我们可以让我们的开发者来看看这个问题。

我对Angular也有同样的问题。Worklight绑定使Angular controller无法实例化。解决方案是在加载worklight后恢复绑定功能

var bind = Function.prototype.bind;
window.wlCommonInit = function() {
  Function.prototype.bind = bind;
};

有点奇怪,worklight.js为bind函数的实现提供了自己的扩展。此扩展已导致Windows Universal app出现问题。那么,在我的开发机器中,这个文件的源存储在哪里呢?也许我可以编辑这个文件…该文件的“主副本”在MobileFirst平台SDK本身中-如果您使用的是Studio(而不是CLI),它位于Eclipse“plugins”目录下,确切的路径名将根据您使用的MFPF构建而有所不同,但它只是被称为“worklight.js”。但是,正如我所说,我们不公开任何受支持的开发人员更改此文件的方式,如果您这样做,它可能会以其他方式破坏产品。您“无法”编辑worklight.js,因为它会在构建时重新生成。您可以在生成的项目中在生成后编辑它,但您的更改将在下一次生成时被覆盖。您可以做的是打开PMR供开发团队决定这是否是可以更改的内容。worklight.js的问题与Function.prototype的绑定覆盖有关。当绑定函数用作构造函数时,我遇到了一个异常。