0

予期しない動作が発生しました。問題があることを理解していただけないでしょうか。特徴だと思いますが、理解できません。

ルート:

App.LacesRoute = Ember.Route.extend
  model: -> App.Lace.find()

App.LaceRoute = Ember.Route.extend
  model: (params) ->
    App.Lace.find(params.lace_id)
  setupController: (controller, model)-> 
    controller.set('content', model)

コントローラ:

App.LacesController = Ember.ArrayController.extend
  contentCount: (
    -> @get("content").toArray().length
  ).property("content")

リスト テンプレート:

{{contentCount}}
{{#each controller}}
{{this}}
{{/each}}

詳細テンプレートはここでは影響力がありません

ルーター:

  @resource "laces", ->
    @resource "lace", {path: ":lace_id"}

私が訪問したとき/laces、カウントは0を出力しますが、すべての靴ひもはeach

カウントを訪問する/laces/1と、正しい数量が印刷され、靴ひもが正しくリストされます

4

2 に答える 2

2

以前のコードでは、返されます

@get("content").toArray().length

そのコンテンツは でありDS.RecordArray、配列のように動作し、lengthプロパティを持つため、これは必要ありません。

したがって、これは機能します:

@get("content.length")

しかし、主な問題はproperty("content")、計算されたプロパティに重要な値を指定する必要があることだと思います。その場合、コンテンツ全体ではなく、プロパティlengthです。

したがって、正しいのはproperty("content.length")です。

最終結果は次のとおりです。

App.LacesController = Ember.ArrayController.extend
  contentCount: (
    -> @get("content.length")
  ).property("content.length")
于 2013-08-20T14:44:51.333 に答える
0

1 つのルートで「モデル」と「setupController」をオーバーライドするたびに、次のように「setupController」で再度 super を呼び出す必要があります。

App.LaceRoute = Ember.Route.extend
  model: (params) ->
    App.Lace.find(params.lace_id)
  setupController: (controller, model)->
    this._super(controller, model)
    controller.set('content', model)
于 2013-08-20T14:48:04.667 に答える