Angular Directives 2 way binding&刷新

时间:2015-01-14 19:19:07

标签: javascript angularjs binding isolate-scope

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

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

第一个指令有一个像

这样的声明
<customer-res results="webserverResult">

并且在customerRes指令中我有类似

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

现在每次用户点击父指令时,它都会向Web服务器发出请求,并可能返回不同的结果。

问题:angular实际上是否监视自己绑定到隔离范围的值在指令之外发生了变化,或者我是否需要做一些事情以确保它无效?

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

1 个答案:

答案 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

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