从 ionic2 中的 javascript 访问打字稿方法



我很想在ionic2中调用javascript中的打字稿方法。让我们考虑一个由"ionic g page MyPage"生成的ionic2页面,其中我创建了一个方法myNewMethod"。

有没有办法从作为 cordova 插件一部分的 javascript 函数调用 myNewMethod"?我注意到在main.js中,正如javascripte所翻译的那样,有一个变量MyPage,myNewMethod被定义为原型。但是,如果我调用MyPage.myNewMethod似乎不起作用。

我进一步注意到以下部分代码:

/* 312 */
(function(module, __webpack_exports__, __webpack_require__) {
"use strict";
var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(136);
__webpack_require__.d(__webpack_exports__, "a", function() { return MyPage; });
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};

var MyPage = (function () {
    function MyPage(navCtrl, navParams) {
        this.navCtrl = navCtrl;
        this.navParams = navParams;
    }
    MyPage.prototype.ionViewDidLoad = function () {
        console.log('ionViewDidLoad MyPage');
    };
    MyPage.prototype.myNewMethod = function () {
        //do stuff
    };
    MyPage = __decorate([
        __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["B"])({
            selector: 'page-add-item',template:'Some Template'
        }),
        __metadata('design:paramtypes', [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["d"], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["e"]])
    ], MyPage);
    return MyPage;
}());

}),

似乎MyPage的范围无法直接使用,并且正在通过webpack_requare返回

任何帮助将不胜感激。

谢谢

可能这不是最好的方法,因为我公开了MyPage,但至少它有效。我所做的是将MyPage分配给窗口变量,即在ionViewDidLoad期间,我写道:

eval('window.MyPage = this');

MyMethod被认为是一个原型,因此我可以通过以下方式从javascript代码中调用它:

window.MyPage.MyMethod();

另一种更正确的方法是覆盖 cordova 插件中存在的函数。如果我们考虑

MyCordovaPlugin.prototype.aMethodToOveride=function(){}

然后在构造函数中形成 MyPage

var MyPage = this; 
cordova.plugins.MyCordovaPlugin.aMethodToOveride=function(){ 
    MyPage.MyMethod();  
}

相关内容

  • 没有找到相关文章

最新更新