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进行设置。