如何在ember.js中实现过滤

时间:2013-02-06 20:42:59

标签: javascript ember.js

我想使用谷歌地图在ember中创建应用程序。它看起来类似于谷歌地图,在左侧我想有过滤器,在右边它将是地图。让我们说我的位置对象看起来像:

{ name: 'Luigi', type: 'pizza', ...}

在过滤器中,我想选中复选框,我希望在地图上显示哪种类型的地方。默认情况下,选择所有元素,并在地图上显示每个选定的类型位置。

在这里开始我的问题。我看了peepcode,阅读指南,但我不知道如何开始。 我想我需要一些FilterController来存储选定的过滤器数组,并且在PlacesControllers 以某种方式 content属性将从FilterController监视类型数组并返回{ {1}}基于此数组的模型集合。

如何在上述情况下对场所进行过滤?

现在我正在尝试构建基于过滤器列出地点的演示,欢迎所有输入!

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,我可能会更具体。