Javascript Ember.js-为目标应用程序创建动态filterProperty值

Javascript Ember.js-为目标应用程序创建动态filterProperty值,javascript,ember.js,Javascript,Ember.js,首先,让我先说一下,我对Ember.js是全新的,对软件开发也相对陌生。我正在尝试构建一个活动日志应用程序,用户可以发布类似于twitter或facebook的小文本更新,也可以创建每周目标,还可以在发布更新时通过从目标下拉列表中选择来选择性地“应用”目标。我已经能够让一切都正常工作了,除了计算用户将帖子“应用”到特定目标的次数。下面是代码的精简版本:(另外,我还编写了一个JSFIDLE) 所以,我想我已经接近了解这一点了,但是我不能完全理解,尽管我确信我忽略了一些非常简单的事情。当我在time

首先,让我先说一下,我对Ember.js是全新的,对软件开发也相对陌生。我正在尝试构建一个活动日志应用程序,用户可以发布类似于twitter或facebook的小文本更新,也可以创建每周目标,还可以在发布更新时通过从目标下拉列表中选择来选择性地“应用”目标。我已经能够让一切都正常工作了,除了计算用户将帖子“应用”到特定目标的次数。下面是代码的精简版本:(另外,我还编写了一个JSFIDLE)

所以,我想我已经接近了解这一点了,但是我不能完全理解,尽管我确信我忽略了一些非常简单的事情。当我在timesThisWeek函数中放入静态目标名称值时,(var值)timesThisWeek计数适用于该特定目标。但是,如果我试图为Handlebar迭代器(var value2)创建一个“this”in,我就无法让timesThisWeek为相关目标工作


我相信这是非常基本的,但任何帮助都将不胜感激

使用
CollectionView
运行它,并在视图中移动项目的绑定筛选@

在模板中:

{{view Ember.CollectionView contentBinding="App.goalsController" itemViewClass="App.GoalView"}}
视图的JS:

App.GoalView = Ember.View.extend({
    templateName: "goal-view",
    timesThisWeek: function() {
        return App.postsController.filterProperty('goal_name', Ember.getPath(this, "content.goalTitle")).get('length');
    }.property('App.postsController.content.@each')
});
但您也可以将此属性作为成员或
目标
模型移动(这取决于您的实际用例:我假定您也有不同的结果时间框架,等等)

编辑


最新版本:

太棒了,感谢您的快速响应!由于某些原因,我无法将它集成到我当前的应用程序中并正常工作,但我会继续工作。另外,还有几个简短的问题:1)为什么使用self=this?我已经看过几次了,但还不知道它为什么有用。2) 我在考虑将本周的时间排除在目标模型之外,因为我认为如果时间不在模型中,可能更容易通过时间进行额外过滤,但是你认为在目标模型中处理它是明智的决定吗?我将使用ember数据和rails进行持久化,并希望获得最佳解决方案1)Ho。。。是的,
self
是一种休息…:-P 2)正如所说,这取决于完整的上下文,但就个人而言,我将把它放在模型中,因为它是存储业务逻辑的好地方(这几乎是本周的时间)。感谢您的回复!我更新了JS fiddle——我似乎无法在添加新帖子时正确启动绑定。单击“添加帖子”按钮时,不会更新timesThisWeek。我试过@each.goal\u name等等,但都没用。有什么想法吗?这里更新了一个例子:你已经把整个事情做好了。不客气(也许你可以考虑投票,如果它符合你的需要……)。
App.GoalView = Ember.View.extend({
    templateName: "goal-view",
    timesThisWeek: function() {
        return App.postsController.filterProperty('goal_name', Ember.getPath(this, "content.goalTitle")).get('length');
    }.property('App.postsController.content.@each')
});