1

私はこのモデルを持っています -

class pt.SearchResultModel extends Backbone.Model
  defaults:
    id:"",
    image:"",
    colour:""

私はこれを試しています -

_.pluck(resultsCollection,'id')

しかし、未定義を返し続けます-何が起こっているのかわかりません。

どのような構文エラーが発生していますか?

4

5 に答える 5

4

Underscore 配列メソッドは (いわば) Backbone コレクションに埋め込まれています。それらを直接呼び出すことができます:

resultsCollection.pluck 'id'

ほとんどの場合、 のように、コレクションのmodels属性 (単純な配列) に対してUnderscore メソッドを使用することもできます。それらにアクセスするには電話する必要があります)。それにもかかわらず、バックボーンの実装は非常に簡単です:)_.pluck someCollection.models, 'someAttr'pluckgetpluck

于 2012-09-13T08:35:55.807 に答える
1

他の人が述べたように、アンダースコアのpluckメソッドに委譲するコレクションのpluckメソッドを直接使用できます。

ただし、たとえばコレクションをフィルタリングすると、モデルの単純な配列になり、コレクションの pluckメソッドがないことに気付きました。この場合、できることは、最初にattributes属性を摘み取ってからid、たとえば次のようなものを摘み取ることです

_.pluck(_.pluck(myCollection, 'attributes'), 'id');

もちろん、新しいコレクションを作成してこれらのモデルを渡し、コレクションpluckメソッドにアクセスすることもできます。

于 2012-09-13T14:32:54.387 に答える
0

そのはず:

resultsCollection.pluck('id');

バックボーン コレクションのアンダースコア メソッドは、元の形式ではなく、このように使用されます。_.method()

于 2012-09-13T08:34:03.713 に答える
0

Backbone.Collection機能の良い部分を自動的に提供しunderscore.jsます。と書くことができますがresultsCollection.pluck('id')、これは少し優れています。

さて、あなたの質問について:pluck内部で「get」を使用して属性を取得します。idこれに加えて、結果は、モデルが属性として定義されていないことを意味します。

于 2012-09-13T08:36:18.260 に答える
0

を呼び出すときは_.pluck(resultsCollection,'id')、コレクション オブジェクトで pluck メソッドを呼び出します。このコレクションにはモデル属性がありますが、id属性はありません。

resultsCollection.pluck('id')そのため、あなたのためにすべての作業を行う wichを呼び出す方がはるかに優れています:

  • モデル属性に移動
  • 各モデルの各属性属性に移動
  • 必要なid値を見つけて結果配列に入れます
于 2012-09-14T11:50:46.140 に答える