假设您有一个页面,您有一个客户搜索指令(第一指令)。 您进行搜索,然后从Web服务器返回客户列表。
现在,在上面的指令中,你有一个第二个指令,我们称之为customerRes
,它会为客户显示一些信息(这就像在你网站的许多地方重复使用的一个小部件)。在第二个指令的孤立范围内,我有一个名为results
的属性,我从返回的结果中绑定,例如。
第一个指令有一个像
这样的声明<customer-res results="webserverResult">
并且在customerRes
指令中我有类似
<div ng-repeat="x in results>
{{name}} {{bla}} ... bla bla
</div>
现在每次用户点击父指令时,它都会向Web服务器发出请求,并可能返回不同的结果。
问题:angular实际上是否监视自己绑定到隔离范围的值在指令之外发生了变化,或者我是否需要做一些事情以确保它无效?
此外,即使您在结果返回之前加载页面,一旦他们回来,他们不应该更新页面元素吗?
答案 0 :(得分:0)
一个很酷的方式是你会发现自己。不要误会我的意思,但我个人在走角度的第一步时就这样做了。有助于更深入地理解框架而不是阅读文档而更容易忘记。
您随时可以添加
scope.$watch('myVariable', function(value) {
console.log('myVariable changed to:', value);
})
指示您的指令并查看其值何时发生变化。
双向绑定就像魅力一样,即使在整页重新加载时也是如此。没有你的指令的JS代码就不能更精确。但是当使用隔离范围时,可能需要指令
scope: {
myVariable: '='
}
<my-directive my-variable="results.entries"></my-directive>
但请记住,重新加载页面时,角度从零重新开始。每个指令的含义是它的链接函数被调用一次,还有很多其他的东西。关键字是angular digest cycle
。
希望我能帮助解决这个问题(更广泛)。