0

Document在网站的侧边栏区域显示标题列表。为了实现这一点,我documentsApp.SidebarController

Document = require '../models/document'

SidebarController = Ember.Controller.extend
  documents: (->
    Document.find()
  ).property()

module.exports = SidebarController

这很好用,当我Document在我的应用程序中创建一个新的时,这个侧边栏属性会自动更新,我不知道为什么。无论我在.property()函数中添加什么,它都有效。例如

.property('Document')
.property('App.Document')

有人可以解释这是如何工作的吗?property()该函数要观察的正确事情是什么?

4

1 回答 1

2

所以你基本上是说这是有效的,但你想知道为什么。

这是我的猜测:当你的控制器被渲染时,你的计算属性第一次被计算并返回一个数组的实例。当您创建一个新文档时,我认为这个相同的数组已更新(= 添加了文档)。因此,尽管您没有在 property() 上指定依赖键,但它确实有效。这是因为正确的阵列已经到位。正如我所说的只是一个猜测,但这似乎是一个可以理解的解释。

正确的做法是什么? 恕我直言,不应直接在计算属性中使用此类数据访问方法。相反,您应该在 Route 中调用此数据访问方法,然后将其分配给控制器。这样可以确保 find() 方法在需要时被执行。

于 2013-03-17T18:08:55.697 回答