0

私は次のコードを取得しました:

Clientes = new Meteor.Collection 'clientes'

 Template.listaClientes.clientes = ->   
 query = {}
 query = Session.get "searchData"
 console.log "get: " + query.nombre  
 clientes = Clientes.find(query) 

 Template.listaClientes.events
  'click .listItem' : ->
     console.log "item clicked"

 Template.searchPane.events
 'click #btnToList' : ->
     query = {}
     #asigna los campos a query si no son blancos
     if (x = $("#qNombre").val())? then query.nombre = x
     if (x = $("#qCiudad").val())? then query.ciudad = x
     console.log "q: " + query.nombre + query.ciudad    

     Session.set "searchData", query

起動時に完全に実行され、クエリは{}であるため、テンプレートにはコレクション内のすべてのドキュメントが表示されます。#btnToListをクリックしても、Find句から結果が返されません。ブラウザコンソールから手動で「searchData」を{}に設定すると、トリガーが起動し、すべてのドキュメントが再度描画されます。

私が欠けているものについて何かアイデアはありますか?

編集:次のことを行うとうまくいき、何が起こっているのか不思議に思う:/

  q={}
  q.nombre = query.nombre if query.nombre?
  Clientes.find q 
4

1 に答える 1

0

2番目のIF(#qCiudad)は、空の場合でも常に値を追加していたようです。チェックをif(x = $( "#qCiudad).val())!=" "に変更すると、...が実行され、クエリオブジェクトが正しく渡されます。

于 2012-10-29T13:49:07.880 に答える