我想使用谷歌地图在ember中创建应用程序。它看起来类似于谷歌地图,在左侧我想有过滤器,在右边它将是地图。让我们说我的位置对象看起来像:
{ name: 'Luigi', type: 'pizza', ...}
在过滤器中,我想选中复选框,我希望在地图上显示哪种类型的地方。默认情况下,选择所有元素,并在地图上显示每个选定的类型位置。
在这里开始我的问题。我看了peepcode,阅读指南,但我不知道如何开始。
我想我需要一些FilterController
来存储选定的过滤器数组,并且在PlacesControllers
以某种方式 content
属性将从FilterController
监视类型数组并返回{ {1}}基于此数组的模型集合。
如何在上述情况下对场所进行过滤?
现在我正在尝试构建基于过滤器列出地点的演示,欢迎所有输入!
答案 0 :(得分:2)
您可以在阵列控制器上执行计算属性,根据接口指定的内容过滤数组控制器:
App.PlacesController({
content: [an array with your places],
placesToDisplay: function(){
return this.filter(function(item){
return this.get('filter').contains(item.get('type')); //true when you want the item to be displayed.
});
}.property('content', 'filter'),
filter: [] //containing the types you want to filter on.
});
请参阅视图中的placesToDisplay
属性。并更新filter
属性。由于placesToDisplay
会监视filter
属性,因此当filter
属性的内容发生变化时,它会重新呈现您的视图。
你尝试过什么?如果你做fiddle,我可能会更具体。