小编Jef*_*amp的帖子

EmberJS/Ember-data:尽管存在所有ID,但hasMany集合不完整

安装版本

ember-cli   2.14.2
ember-data  2.14.10
Run Code Online (Sandbox Code Playgroud)

一点看法:

我有一个名为menu在计算属性中执行存储查询的服务.其中一个商店查询表现得相当奇怪.它product-segment从功能齐全的JSON API中获取模型名称下的所有记录.此模型与product通过hasManyDS对象引用的模型有nn关系:

型号/产品segment.js

export default DS.Model.extend({

    products: DS.hasMany('product'),
    // ...
});
Run Code Online (Sandbox Code Playgroud)

车型/ product.js

export default DS.Model.extend({

    productSegments: DS.hasMany('product-segment'),
    // ...
})
Run Code Online (Sandbox Code Playgroud)

问题:

现在,当我获取这些product-segment模型时,我会指示API { include: 'products' },并且API会按要求执行.响应包括product特定的15个相关模型product-segment,这是正确的.

(让我们称这个特殊的product-segment 段x,它是我下面所有调试信息的主题)

但是,在任何时候,从任何上下文访问段x上的关系集合,只会返回12个模型,因此缺少3个模型.我目睹了与其他product-segment模型类似的问题,所以我不认为这是一个特定模型的问题.

更多的观点

我最初以为我正在处理某种竞争条件,并确保我创建了一个计算属性 - test找出来,并且我倾向于{{menu.test}}在我的视图中搔痒计算出的道具.

这是里面最简单的信息 services/menu.js

export default Service.extend({

    store: inject(),

    activeProductSegment: null,

    // As a note: this does not …
Run Code Online (Sandbox Code Playgroud)

javascript has-many ember.js ember-data

7
推荐指数
1
解决办法
255
查看次数

Typescript:如何声明默认导出也是 UMD 命名空间?

在打字稿中,有这样的语法将模块的所有导出的“包”声明为 UMD 全局命名空间。来自文档

export function isPrime(x: number): boolean;
export as namespace mathLib;
Run Code Online (Sandbox Code Playgroud)

这声明了一个 UMD 全局变量mathLib,作为该模块中所有“真实”导出的命名空间,因此我们可以编写以下内容:

<script>
    mathLib.isPrime(2);
</script>
Run Code Online (Sandbox Code Playgroud)

现在我有一个带有默认导出的入口模块,我希望默认导出是这个命名空间。但我似乎无法让它发挥作用。例如:

我的模块.d.ts

interface MyType {
    bar: number;
}

declare const Foo: MyType;
export default Foo;
Run Code Online (Sandbox Code Playgroud)

我想为此创建一个模块构建,以便它可以在其他模块环境中使用:

import Foo from 'my-module'

use(Foo.bar).someHow()
Run Code Online (Sandbox Code Playgroud)

...并且还希望此默认导出的类型是可以指定名称的 UMD 全局类型Foo- 与默认导出的名称相同,以便在非模块脚本中使用我的模块的类型:

<script>
    use(Foo.bar).someHow() // exactly the same
</script>
Run Code Online (Sandbox Code Playgroud)

对于我的 UMD 捆绑包,我已经使用该设置配置了 webpack output.library.export = 'default',因此实际上创建了一个完美的捆绑包,使得如上所述的使用成为可能。但我无法弄清楚如何完成任何类型,因为如果我写:

  declare const Foo: MyType;
  export default Foo;
+ export as namespace Foo;
Run Code Online (Sandbox Code Playgroud)

如果我编写以下内容,我只会在 IDE …

typescript umd

6
推荐指数
0
解决办法
556
查看次数

如何等待可选的 Observable

在我的 Angular 应用程序中,我正在进行可选的 HTTP 调用来检查用户是否存在。根据这次通话的结果,我要么想再拨打一次电话,要么停止处理。如果不求助于.toPromise(),我如何等待在块中进行的调用if

  onSomeEvent() {
    const contact: IContact = {
      ...this.userForm.value
    };

    let cancelProcessing = false;

    if (this.isNewUser()) {
      // *** This is optional
      this.userService.duplicateUserSearch(contact.email, contact.userName)
        .subscribe(result => {
          if (result.result !== '') {
            cancelProcessing = true;
          }
        });
    }

    // *** This statement is hit before the observable completes
    if (cancelProcessing) {
      return;
    }

    //  *** which means that this runs when it shouldn't
    this.userService.updateContact(contact)
      .subscribe(res => {
        this.activeModal.close(res);
      });
  }
Run Code Online (Sandbox Code Playgroud)

rxjs typescript angular

3
推荐指数
1
解决办法
2113
查看次数

标签 统计

typescript ×2

angular ×1

ember-data ×1

ember.js ×1

has-many ×1

javascript ×1

rxjs ×1

umd ×1