小编Phi*_*ley的帖子

Angular 2中的ChangeDetectionStrategy.OnPush和Observable.subscribe

在使用Observables的同时,我正试图围绕最佳实践ChangeDetectionStrategy.OnPush.

该示例演示了想要显示某种加载消息(或者可能是简单的微调器动画)的常见场景:

Plnkr在这里

@Component({
  selector: 'my-app',
  template: `Are we loading?: {{loadingMessage}}`,

  // Obviously "Default" will notice the change in `loadingMessage`...
  // changeDetection: ChangeDetectionStrategy.Default

  // But what is best practice when using OnPush?
  changeDetection: ChangeDetectionStrategy.OnPush
})
export class App implements OnInit {

  private loadingMessage = "Wait for it...";

  constructor() {

  }

  ngOnInit() {

    // Pretend we're loading data from a service.
    // This component is only interested in the call's success
    Observable.of(true)
      .delay(2000)
      .subscribe(success => {

        if(success){
          console.log('Pretend loading: …
Run Code Online (Sandbox Code Playgroud)

javascript angular

35
推荐指数
2
解决办法
1万
查看次数

d3重置范围后保留缩放/平移

<svg>的宽度是其容器的100%.调整容器大小时,我更新线性xScale.range()以表示新的调整大小的宽度<svg>.显然,我需要重新应用范围到zoom.x()文档中概述的缩放行为:

如果以编程方式修改了比例的域或范围,则应再次调用此函数.设置x标度也会将标度重置为1并将平移重置为[0,0].

重置scale并且translate是我遇到问题的地方.如果我在调整大小之前已经放大了,我打电话zoom.x( xScale ),现在d3认为图表的比例是1而翻译是0,0因此,我无法缩小或平移.

我处理调整大小的方法不正确吗?

d3.js

9
推荐指数
1
解决办法
1957
查看次数

分享在RxJS 5中的重播

根据RxJS 5 MIGRATION.md,它看起来像shareReplay()被删除了.

  1. 为什么?
  2. 是否.publishReplay(1).refCount()忠实地复制行为?基本上我需要将最新的单个数据集重播给任何新订阅者.

javascript rxjs rxjs5

9
推荐指数
2
解决办法
5985
查看次数

Angular $ sce vs外部语言环境文件中的HTML

关于ng-bind-html将Angular应用程序从1.0.8升级到1.2.8的问题:

我将语言环境字符串存储在名为en_GB.json,fr_FR.json等的文件中.到目前为止,我已允许在语言环境字符串中使用HTML,以允许团队编写本地化内容以应用基本样式或添加内联锚标记.这将导致以下示例JSON:

{
  "changesLater":     "<strong>Don't forget</strong> that you can always make changes later." 
  "errorEmailExists": "That email address already exists, please <a href=\"login\">sign in</a> to continue."
}
Run Code Online (Sandbox Code Playgroud)

当使用这些字符串时ng-bind-html="myStr",我明白我现在需要使用$sce.trustAsHtml(myStr).我甚至可以按照这个StackOverflow应答中的建议编写一个过滤器,这将导致使用ng-bind-html="myStr | unsafe".

问题:

  1. 通过做这样的事情,我的应用程序现在是不安全的吗?如果是这样,攻击者如何利用这个?
  2. 如果显示的HTML字符串的来源是用户(即将向其他用户显示的博客文章后评论),我可以理解潜在的漏洞利用,但如果我只显示来自其他用户的HTML,我的应用程序真的会面临风险JSON文件托管在同一个域上?
  3. 我还有什么其他方法可以在角度应用程序中实现外部加载内容字符串的标记吗?

javascript xss angularjs

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

关于隔离范围属性的AngularJS文档

是否有任何AngularJS文档提供了一个直接明确的方法列表,用于处理具有隔离范围的指令中的属性?

指令引导触及使用=,但不会列出用于绑定的其他选项.

到目前为止,我知道(通过混合来源):

scope: {
   myAttr1: '=attr1',
   myAttr2: '=?attr2',
   myAttr3: '@attr3',
   myAttr4: '&attr4'
},
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-directive angularjs-scope

6
推荐指数
1
解决办法
1605
查看次数

使用@import时可以参考Compass sprite map

如果我使用以下内容生成精灵映射:

@import "ui-icons/*.png";
Run Code Online (Sandbox Code Playgroud)

如何获取已创建的精灵映射的引用.我想把它传递给sprite-position($map)函数.

css-sprites compass-sass

2
推荐指数
1
解决办法
212
查看次数

具有未知参数的通用函数参数

将泛型参数指定为函数是否...args: unknown[]效果不佳?

// Using TS 4.2.3
const fn = (foo: boolean) => 'hello'

// Ideally, one generic function arg
type Data1<M extends (...args: unknown[]) => unknown> = {
  fn: M
}
const data1: Data1<typeof fn> = {
                   ^^^^^^^^^
  fn,
}
Run Code Online (Sandbox Code Playgroud)
Type '(foo: boolean) => string' does not satisfy the constraint '(...args: unknown[]) => unknown'.
  Types of parameters 'foo' and 'args' are incompatible.
    Type 'unknown' is not assignable to type 'boolean'.
Run Code Online (Sandbox Code Playgroud)

这个TypeScript Playground示例还演示了将函数拆分为两个通用参数,这可以工作,但从 API 的角度来看并不好。我希望更好地理解为什么一个有效,但另一个无效。

typescript typescript-generics

2
推荐指数
1
解决办法
3004
查看次数