2014-04-16 17 views
0

我有一个谷歌自动完成搜索框,不断更新搜索。 下面的代码适用于两个搜索,然后我得到一个findQuery的响应必须是一个数组,而不是未定义。Emberjs:UPDATED findQuery的响应必须是一个Array,而不是undefined

卸载每个新搜索的商店地址和酒店数据可能不是一件好事。但现在我想不出任何其他解决方案。

Lost.HotelRoute = Ember.Route.extend({ 
queryParams: { 
    currentPlace: { 
     refreshModel: true 
    } 
}, 
model: function (params) { 
    var self = this; 
    var hotelController = this.controllerFor('hotel'); 
    var currentPlace = hotelController.get('currentPlace'); 
    self.store.unloadAll('address'); 
    self.store.unloadAll('hotel'); 
    return this.store.find('address', { 
     locality: currentPlace 
    }).then(function (response) { 
     return self.store.all('hotel'); 
    }); 
}, 
deactivate: function() { 
    this.controllerFor('city').set('routeNeedsAutoSearch', false); 
} 

});

+0

是'找到(“地址”,{currentPlace})'一个错字我可能不适合我学习这么?它应该是'find('address',{locality:currentPlace})'如上? – claptimes

+0

感谢它('地址',currentPlace),因为我的组件传递适当的对象。仍然存在相同的错误 – Rigel

回答

0

我改变了我的方法。 我想这是一个很好的方式来卸载每个搜索的数据。 更好的方法是用户this.store.filter 所以我现在正在做这样的事情。

如果有一个人提出一个更好的任何我将选择适当的答案

return this.store.find('address', { 
    locality: currentPlace 
}).then(function (response) { 
     response.forEach(function (item) { 
      addressId = item.get('id'); 
      arr = self.store.filter('hotel', function (hotel) { 
      return hotel.get('address.id') == addressId; 
     }); 
    }); 
}); 
相关问题