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

つまり、基本的にはうまくいくと言っていますが、その理由を知りたいのです。

これが私の推測です。コントローラーがレンダリングされると、計算されたプロパティが初めて計算され、配列のインスタンスが返されます。新しい Document を作成すると、これとまったく同じ配列が更新される (= Document が追加される) と思います。したがって、property() で依存キーを指定しないという事実にもかかわらず、機能します。これは、適切な配列が既に配置されているためです。私が言ったように推測にすぎませんが、これは理解できる説明のようです。

そして、何をするのが正しいでしょうか? 私見では、計算されたプロパティでそのようなデータアクセスメソッドを直接使用しないでください。代わりに、ルート内でこのデータ アクセス メソッドを呼び出してから、コントローラーに割り当てる必要があります。このようにして、必要に応じて find() メソッドが実行されるようにします。

于 2013-03-17T18:08:55.697 に答える