【问题标题】:Using Progress JSDO with Angular CLI project在 Angular CLI 项目中使用 Progress JSDO
【发布时间】:2018-01-08 14:45:29
【问题描述】:

我正在尝试创建一个 Angular 应用程序作为 API 的客户端,该 API 需要使用 Progress JSDO 通过业务实体与 OpenEdge 数据进行交互。我对 Angular 开发还很陌生,但我对 Progress JSDO 相当熟悉,所以我觉得我的问题根源于我如何将进度包含在项目中。

我发现了这个例子,我认为它已经过时了:

Progress Community Post

与此 PUG 挑战 PDF 相同:

PUG Challenge PDF

这是我使用的与 JSDO 交互的代码:

import { Injectable }       from '@angular/core';

import { Observable }       from 'rxjs/Observable';
import 'rxjs/add/observable/fromPromise';
import 'rxjs/add/operator/map';

import { progress } from 'jsdo';

import { PriceResponse } from './oo-price-response';
import { OOProduct }        from './oo-product';

//Products JSDO service
@Injectable()
export class OEWebPriceService {
    private tableName: string = 'Products';
    private jsdo: any;

    constructor() {

        const serviceURI = 'myServiceURI';
        const catalogURI = 'myCatalogURI';

        let session = new progress.data.JSDOSession({ serviceURI: serviceURI });

        session.login('devono|ulfoods.com','devono')
            .then(() => {
                session.addCatalog(catalogURI);
            });

        let productJSDO = new progress.data.JSDO({ name: 'Products' });
        this.jsdo = productJSDO;
    }

    public getPrices(): Observable<OOProduct[]> {
        return this.fetch();
    }

    private fetch(): Observable<OOProduct[]> {
        let ttPrices=[];

        let params = {
            accountNumber: "945873",
            ttPrice: {
                ttPrice: [
                    { seq: 0, productCode: "152709"},
                    { seq: 1, productCode: "717141"},
                    { seq: 2, productCode: "152711"}
                ]
            },
            userLoginID: "devono|ulfoods.com"
         };

        let prodPromise = new Promise((resolve, reject) => {
            this.jsdo.invoke("GetPrices", params)
                .done( (jsdo: any, success: any, request: any) => {
                    ttPrices = request.response.ttPrice.ttPrice;
                    resolve(ttPrices);
                })
        });

        let result = Observable.fromPromise(prodPromise);

        return result;
    }
}

这段代码在 Sublime 中看起来是文件,TypeScript 可以识别所有类型和方法等,并且一切都可以正常编译。但是,在浏览器中,我从 Chrome 开发人员工具中收到一条错误消息:

我觉得 Progress 找不到 jQuery,即使当我通过 npm 将 JSDO 安装到我的项目时,jQuery 也随之出现。有没有我错过的步骤?有没有人成功地将 JSDO 包含在 Angular 项目中,并且可以列出这些步骤?

我会尝试在 Plunker 或其他东西中建立一个可行的示例,但我真的不知道该怎么做,所以希望现在就足够了。

提前致谢!

【问题讨论】:

    标签: angular rest angular-cli openedge progress-4gl


    【解决方案1】:

    这是一个工作示例

    https://github.com/consultingwerk/Angular2JsdoSamples/tree/master/Demo1-EGarcia-Simple

    确保在 angular-cli.json 中将 Jquery 作为脚本引用

    【讨论】:

    • 这正是我所需要的!就像你说的那样,我错过了 angular-cli.json 中的脚本参考,我按照示例进行了操作,它工作得很好。谢谢!
    猜你喜欢
    • 2017-05-13
    • 1970-01-01
    • 2019-02-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    相关资源
    最近更新 更多