Angular 指令 2 方式绑定和刷新

Angular Directives 2 way binding & refresh

假设您有一个页面,其中有一个客户搜索指令(第一个指令)。 您进行搜索并从 Web 服务器返回客户列表。

现在,在上面的指令中,您有第二个指令,我们称它为 customerRes,它为客户显示一些信息(这就像在您网站的许多地方重复使用的小部件)。在第二条指令的隔离范围内,我有一个名为 results 的属性,我从返回的结果中绑定了该属性,例如

第一个指令的声明类似于

<customer-res results="webserverResult">

customerRes 指令中我有类似

的东西
<div ng-repeat="x in results>
{{name}} {{bla}}  ... bla bla
</div>

现在每次用户单击父指令时,它都会向网络服务器发出请求,并且可能会得到不同的结果。

问题:angular 是否实际监控自己绑定到独立作用域的值在指令之外发生了变化,还是我需要做些什么来确保它无效?

此外,即使您在结果返回之前加载您的页面,一旦他们返回,他们不应该更新页面元素吗?

一个很酷的方法是您会自己找到答案。不要误会我的意思,但我个人是在 angular 迈出第一步时这样做的。有助于更深入地理解框架而不是阅读文档并且更容易忘记。

您可以随时添加

scope.$watch('myVariable', function(value) { 
  console.log('myVariable changed to:', value);
})

你的指令,看看它的值何时改变。

即使在整页重新加载时,双向绑定也很有魅力。没有指令的 JS 代码就不能更精确。但是当使用独立作用域时,指令可能需要

scope: {
   myVariable: '='
}
<my-directive my-variable="results.entries"></my-directive>

但请记住,重新加载页面时,angular 会从零重新开始。对于每个指令来说,它的 link 函数被调用一次,并且在后台调用许多其他的东西。关键字是 angular 的 digest cycle.

希望我能帮助解决这个(更广泛的)问题。