【发布时间】:2015-01-17 11:17:11
【问题描述】:
让我们定义一个简单的场景,其中博客有一个Posts 列表,每个列表都有Comments 和其他Objects。
在构建Post 页面时,我可以定义以下元素:
<post post="post"></post>
<comments post="post"></comments>
<objects post="post"></objects>
或:
<post post="post">
<comments></comments>
<objects></objects>
</post>
为了提供可重用性,与元素关联的每个指令都有自己的隔离范围。
然后考虑例如与<comments> 关联的指令,我可以为其提供Add 按钮、Reload comments 按钮等。这很容易,只要它的功能限制在它自己的范围内。
Comments 在Post 首次加载时加载,在与<comments> 关联的指令的link 方法中。当(父)Post 更改时,我如何触发Comments 重新加载?
- 在与
<comments>关联的指令中,我是否应该放置一个scope.$watch('post')以在关联的Post更改时进行监听并在更改Comments 时触发重新加载? - 我是否应该在
Post指令中创建一个register函数,其中Comments 和Objects 订阅它们自己的控制器,并在需要重新加载它们时从Post函数中得到通知?也就是手动实现的观察者模式。 -
$broadcast和$on?不知道如何使用隔离范围来实现它们。
【问题讨论】:
-
我不确定您在数据方面的架构,但我认为如果您要将 cmets 作为嵌入帖子的对象加载,您的评论指令可以绑定到帖子 cmets 集合并且更改会传播自动添加到您的 UI。编辑:这篇博文很好地解释了umur.io/…
标签: javascript angularjs