小编Sen*_*the的帖子

如何检查ui-router中的当前状态是否为抽象状态的子节点

我有一个抽象状态"设置",其中包含一组使用字符串定义的子项,如"settings.personal","settings.business"等.如果当前状态是抽象"设置"状态的子节点,我需要检查更高级别的共享控制器.

我无法弄清楚如何检查这个?我试图使用$state.is希望它足够智能来检测这一点,但似乎并非如此.

$state.is("settings") # => false
$state.is("settings.personal") # => true
Run Code Online (Sandbox Code Playgroud)

那么,还有其他想法吗?

angularjs angular-ui-router

8
推荐指数
1
解决办法
2414
查看次数

如何遍历JS对象及其中的所有数组和对象以将其与其副本进行比较?

selectedItem在Angular中有一个对象,它包含其他对象和数组.我使用JSON技巧创建一个深层副本:

$scope.editableItem = JSON.parse(JSON.stringify($scope.selectedItem))
Run Code Online (Sandbox Code Playgroud)

然后我editableItem在输入中使用模型,更改内部的一些值.selectedItem不会改变.然后我想通过PATCH所做的所有更改发送,但不发送未更改的字段.所以我需要editableItem从未更改的所有字段中删除selectedItem.

如何有效地做到这一点?我正在考虑使用Underscore以递归方式遍历对象,但我真的想知道在解决它之前它是否是一种好的思考方式.

或者我可能会创建第三个对象,它只包含第二个触摸的字段,动态添加,但我不知道如何处理它.

编辑:为了清楚起见,我希望答案是通用的,并假设最复杂的对象结构成为可能.例如,这个问题的答案都不适用于此,因为它们假设对象只有简单的字段,或者需要分别为每个字段明确设置角度观察器.

javascript underscore.js angularjs

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

当 ngModel 在没有用户输入的情况下从组件更改时,ngModelChange 不会触发

我有一个指令应该根据输入的 ngModel 更新一些内部值。当用户手动输入值时,这可以正常工作,但当 ngModel 从组件更改时,这将停止工作。

组件模板:

<input [(ngModel)]="myValue" myExample>
Run Code Online (Sandbox Code Playgroud)

更改组件中的 ngModel:

ngOnInit() {
  this.getDataFromApi()
  .then((result) => {
    this.myValue = result;
  })
}
Run Code Online (Sandbox Code Playgroud)

指示:

import { Directive, OnInit } from '@angular/core';
import { NgModel } from '@angular/forms';

@Directive({
  selector: '[myExample][ngModel]',
  providers: [NgModel],
  host: {
    '(ngModelChange)' : 'onModelChange($event)',
  }
})
export class myExampleDirective implements OnInit {
  private _valueInDirective;

  constructor(private _element: ElementRef, private _model: NgModel) { }

  onModelChange(event) {
    this._valueInDirective = event;
  }
}
Run Code Online (Sandbox Code Playgroud)

如果在 API 调用后从控制器更新 ngModel,则指令中的 ngModelChange 不会触发,并且 _valueInDirective 也不会更新。如何确保每次更新 ngModel …

angular

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