我有一个抽象状态"设置",其中包含一组使用字符串定义的子项,如"settings.personal","settings.business"等.如果当前状态是抽象"设置"状态的子节点,我需要检查更高级别的共享控制器.
我无法弄清楚如何检查这个?我试图使用$state.is希望它足够智能来检测这一点,但似乎并非如此.
$state.is("settings") # => false
$state.is("settings.personal") # => true
Run Code Online (Sandbox Code Playgroud)
那么,还有其他想法吗?
我selectedItem在Angular中有一个对象,它包含其他对象和数组.我使用JSON技巧创建一个深层副本:
$scope.editableItem = JSON.parse(JSON.stringify($scope.selectedItem))
Run Code Online (Sandbox Code Playgroud)
然后我editableItem在输入中使用模型,更改内部的一些值.selectedItem不会改变.然后我想通过PATCH所做的所有更改发送,但不发送未更改的字段.所以我需要editableItem从未更改的所有字段中删除selectedItem.
如何有效地做到这一点?我正在考虑使用Underscore以递归方式遍历对象,但我真的想知道在解决它之前它是否是一种好的思考方式.
或者我可能会创建第三个对象,它只包含第二个触摸的字段,动态添加,但我不知道如何处理它.
编辑:为了清楚起见,我希望答案是通用的,并假设最复杂的对象结构成为可能.例如,这个问题的答案都不适用于此,因为它们假设对象只有简单的字段,或者需要分别为每个字段明确设置角度观察器.
我有一个指令应该根据输入的 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 …