【问题标题】:Breezejs, angular 2 and ODataBreezejs,角度 2 和 OData
【发布时间】:2016-09-06 15:38:58
【问题描述】:

我不知道什么是使 angular 2、BreezeJs 和 OData 一起工作的正确方法

我遵循了这个 npm 包中的说明:https://www.npmjs.com/package/breeze-bridge-angular2

我还添加了指向 OData 库的链接。

我初始化 OData 适配器的代码如下所示:

config.initializeAdapterInstance('dataService', 'webApiOData', true);
    this._em = new EntityManager('http://localhost:7248/api');    
    this._em.fetchMetadata((schema) => {
      console.log('schema', schema);
      var collectionPointType = this._em.metadataStore.getEntityType("ClientBrowse");
      (<any>collectionPointType).setProperties({ autoGeneratedKeyType: AutoGeneratedKeyType.Identity });
    });

但不幸的是它没有用。

我发现,breezejs 正在尝试解析函数 __requireLibCore(libName) 中的库 OData,它在 global.window 中查找,但此变量未定义。

我不确定 global.window 是如何初始化的,但似乎它应该链接到全局窗口对象。我猜由于某些角度 2 隔离,它无法直接访问窗口。

我该如何克服这个问题?肯定的解决方案之一是制作猴子补丁,但我怀疑这是要走的路。

【问题讨论】:

  • 我也有同样的问题。我已经导入了datajs。仍然全局对象看起来像一个空对象.. 有人可以点亮我如何确保对全局的正确值?

标签: angular odata breeze


【解决方案1】:

您缺少 datajs 依赖项。 Breeze OData 适配器需要 datajs。

npm install datajs --save

然后将其添加到您的 systemjs.config.js

map: { ... 'datajs': 'npm:datajs' }, packages: { ... 'datajs': { main: 'index.js', defaultExtension: 'js' } }

然后将其导入您的应用程序,以便加载。

import { config } from 'breeze-client'; import 'datajs';

【讨论】:

    猜你喜欢
    • 2012-10-28
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    相关资源
    最近更新 更多