plugins - 如何访问编组 iOS [Nativescript]
问题描述
我目前有一个功能插件,但是我无法在 finishCheckout 方法中获取对象
import { Options } from "./mercadopago-px.common";
import * as frameModule from "tns-core-modules/ui/frame";
export class LifeCycleProtocolImpl extends NSObject
implements PXLifeCycleProtocol {
public resolve: any;
public reject: any;
static ObjCProtocols = [PXLifeCycleProtocol]; // define our native protocalls
static new(): LifeCycleProtocolImpl {
return <LifeCycleProtocolImpl>super.new(); // calls new() on the NSObject
}
cancelCheckout(): () => void {
this.reject({
status: "cancel",
data: null,
error: "cancelCheckout"
});
return null;
}
changePaymentMethodTapped?(): () => void {
return null;
}
finishCheckout(): (result: PXResult) => void {
this.resolve({
status: "finishCheckout",
data: null,
error: null
});
return null;
}
}
export class MercadopagoPx {
public start(options: Options): Promise<any> {
return new Promise((resolve, reject) => {
let checkout = MercadoPagoCheckout.alloc().initWithBuilder(
MercadoPagoCheckoutBuilder.alloc()
.initWithPublicKeyPreferenceId(
options.publicKey,
options.preferenceId
)
.setLanguage(options.language)
);
let lifeCycleProtocolDelegate: LifeCycleProtocolImpl = LifeCycleProtocolImpl.new();
lifeCycleProtocolDelegate.resolve = resolve;
lifeCycleProtocolDelegate.reject = reject;
let pxLifeCycleProtocol: PXLifeCycleProtocol = lifeCycleProtocolDelegate;
checkout.startWithNavigationControllerLifeCycleProtocol(
frameModule.topmost().ios.controller,
pxLifeCycleProtocol
);
});
}
}
我的问题是如何访问这里,实际上不能访问,因为我对 linter TS 有问题:
finishCheckout(): (result: PXResult) => void {
console.dir(result); <---- Here error, can't access to result
this.resolve({
status: "finishCheckout",
data: null,
error: null
});
return null;
}
试图访问该对象,我不能,因为它检测到该变量不存在,当它存在时,我不知道它是否是访问该属性的方式,或者是否有一种方法可以访问该返回的对象对我来说尝试实施的方法
解决方案
这意味着您正在返回一个finishCheckout
具有参数的函数result
。
finishCheckout(): (result: PXResult) => void {
console.dir(result); <---- Here error, can't access to result
this.resolve({
status: "finishCheckout",
data: null,
error: null
});
return null;
}
应该是,
finishCheckout(result: PXResult) {
console.dir(result);
this.resolve({
status: "finishCheckout",
data: null,
error: null
});
return null;
}
ifresult
应该是finishCheckout
.
编辑:
根据类型(finishCheckout(): (p1: PXResult) => void;
),该方法没有参数,但它返回一个函数,该函数将以结果作为参数。因此,您无法访问那里的结果。
推荐阅读
- javascript - IonRange 滑块 onUpdate 转换
- azure - Azure 逻辑应用 HTTP 操作步骤 - 动态获取要在查询字符串中使用的日期
- eclipse - 如何在 Eclipse 中禁用反编译器视图(Eclipse EE 2021-06 版本)
- area - Maxscripts上的测量区域
- angular - ngbootstrap 轮播没有按预期工作
- flutter - 有没有办法在飞镖中定义一个带有索引参数的getter?
- mysql - 从 WordPress 获取 Easy Appointment(WP 插件)数据并将数据发送到 Mailchimp
- python - 如何从 JSON 中删除空对象和数组?
- mql4 - 为什么在 EA 中使用 iCustom 没有从指标缓冲区中获得正确的值?
- java - 执行 Maven 发布时出现 401 未经授权的错误