我在网站的侧边栏区域显示Document
个标题列表。为此,我在documents
App.SidebarController
属性
Document = require '../models/document'
SidebarController = Ember.Controller.extend
documents: (->
Document.find()
).property()
module.exports = SidebarController
这很好用,当我在我的应用程序中创建一个新的Document
时,这个侧边栏属性会自动更新,我不知道为什么。无论我在.property()
函数中放什么,它都有效。 e.g。
.property('Document')
.property('App.Document')
有人可以解释一下这是如何工作的吗? property()
函数要观察的正确方法是什么?
答案 0 :(得分:2)
所以你基本上说这是有效的,但你想知道为什么。
这是我的猜测:当您的控制器被渲染时,您的计算属性将首次计算并返回一个数组实例。当您创建一个新文档时,我认为这个相同的数组已更新(=添加了文档)。因此,尽管您没有在property()上指定依赖键,但它确实有效。这是因为正确的数组已经存在。正如我只是猜测,但这似乎是一个可以理解的解释。
什么是正确的做法? 恕我直言,不应该直接在计算属性中使用此类数据访问方法。相反,您应该在Route中调用此数据访问方法,然后将其分配给控制器。这样就可以确保在需要时执行find()方法。