我遇到了作者正在做的this answer
$scope.$watch('myObject', function(newValue, oldValue){
if(angular.equals(newValue, oldValue)){
return;
}
});
为什么newValue和oldValue在这里会一样?我对$watch
的理解是,它只会在myObject
更改时触发。我错过了什么?
答案 0 :(得分:1)
在使用$watchCollection
的情况下,这完全没用。你指出的答案没有添加任何东西。然而,原始问题是有意义的,使用10 192.0109ms 3 &{{0xc082082900}} <nil>
9 192.0109ms 3 &{{0xc082082780}} <nil>
8 192.0109ms 3 &{{0xc082082000}} <nil>
7 197.0112ms 3 &{{0xc082015c80}} <nil>
6 227.0129ms 3 &{{0xc082082300}} <nil>
5 372.0212ms 3 &{{0xc082082180}} <nil>
4 375.0214ms 0 &{{0xc082015e00}} <nil>
3 375.0214ms 3 &{{0xc082082600}} <nil>
2 375.0214ms 3 &{{0xc082082480}} <nil>
1 378.0216ms 3 &{{0xc082082a80}} <nil>
时为known bug。
答案 1 :(得分:0)
public Entities() : base("name=Entities")
{
}
public Entities(string connectionstring) : base(connectionstring)
{
this.Configuration.LazyLoadingEnabled = true;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
}
plnkr 在此示例中,我们匹配新旧字符串以执行搜索/发送API搜索请求
这样做的原因是在搜索字段中输入数据时最小化API请求,如果用户在该时间内未输入任何内容,则会检查一段时间之后检查这就是为什么我们匹配新旧值
答案 2 :(得分:0)
我发现如果第一次更改值时调用$ watch,则两个参数都将设置为新值。这是由角度中的以下代码引起的:
fn(value, ((last === initWatchVal) ? value : last), current);
fn
是您的处理程序,last
是旧值,初始化为名为initWatchVal
的标记函数,value
是观察模型的当前状态。因此,在我们有一个“真实”旧值之前,第二个参数设置为value
,因此两个参数是相同的。