Ember.js Ember如何处理这个controller.property()

Ember.js Ember如何处理这个controller.property(),ember.js,Ember.js,我正在站点的侧边栏区域显示文档标题列表。为了实现这一点,我在App.SidebarController Document = require '../models/document' SidebarController = Ember.Controller.extend documents: (-> Document.find() ).property() module.exports = SidebarController 这很好,当我在应用程序中创建一个新的文档时

我正在站点的侧边栏区域显示
文档
标题列表。为了实现这一点,我在
App.SidebarController

Document = require '../models/document'

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

module.exports = SidebarController
这很好,当我在应用程序中创建一个新的
文档时,这个边栏属性会自动更新,我不知道为什么。无论我在
.property()
函数中输入什么,它都可以工作。e、 g

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

有人能解释一下这是怎么回事吗?
property()
函数要观察的正确情况是什么?

那么您基本上是说这是可行的,但是您想知道为什么

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

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

这很有意义,谢谢您的回答!我同意为控制器提供路由设置数据,问题是我的边栏不是路由,它只是通过
应用程序
模板中的
{{render'sidebar}}
调用-因此我只使用
控制器
/
视图
。我不知道当您从侧边栏指向
/#/documents
(设置文档的路径)时,我将如何触发所有发生的事情。@mavilein关于事情如何/为什么工作是正确的,数据访问方法应该在一个路径中。由于您正在从
应用程序
模板调用
{{render}
,请使用
ApplicationRoute.setupController()
hook进行设置。