所以这里是一些简单的示例代码,我在今天学习Angular时从一个例子中设置。
夫妻问题:
如何知道运行categoryFilterFn
。我猜测绑定到html视图的任何内容,$scope
以某种方式被执行"如果"有变化。
为什么过滤器运行两次?如果您运行该示例,您将看到四个产品的八个控制台语句。即使我将它全部移动到一个控制器中,它仍然会这样做。
答案 0 :(得分:2)
如何知道运行categoryFilterFn。我猜测任何绑定的东西 到html视图和$ scope以某种方式执行“以防万一” 有变化。
是的,Angular摘要循环会进行脏检查以查看是否有任何更改。它在监视队列中执行此操作(根据它们是否绑定在UI中,事物将放入监视队列中。)
为什么过滤器会运行两次?如果您运行该示例,您将看到 四个产品的八个控制台声明。即使我把它全部移动了 进入一个控制器,它仍然这样做。
同样,Angular使用脏检查(here is a good article about it)。基本上,在摘要周期开始期间,观察值被解析。然后,在摘要周期结束时,再次解析该值(这是第二次调用)。如果值不匹配,则UI将替换为新值。简单来说,这就是双向绑定的工作原理。