2012-04-04 61 views
2

首先,讓我通過說我對Ember.js是全新的,並且相對較新的軟件開發來說明這一點。我正在嘗試構建一個活動日誌記錄應用程序,用戶可以在其中發佈類似於Twitter或Facebook的小文本更新,還可以創建每週目標,並可以在發佈更新時從目標下拉列表中選擇「應用」發佈到目標。除了統計用戶將帖子「應用」到特定目標的次數之外,我已經能夠讓所有內容都能夠正常工作。因此,這裏的下面的代碼的精簡版:(另外,我放在一起的jsfiddle http://jsfiddle.net/jjohnson/KzK3B/3/Ember.js - 爲目標應用程序創建動態filterProperty值

App = Ember.Application.create({}); 

App.Goal = Ember.Object.extend({ 
    goalTitle: null, 
    timesPerWeek: null 

}); 

App.Post = Ember.Object.extend({ 
    postContent: null, 
    goal_name: null 
}); 

App.postsController = Ember.ArrayController.create({ 
    content: [ 
     App.Post.create({ postContent: "went and played golf today, shot 69", goal_name: "Play a round of golf" }), 
     App.Post.create({ postContent: "went and played golf today, shot a 70", goal_name: "Play a round of golf" }), 
     App.Post.create({ postContent: "went to the range for an hour", goal_name: "Range practice" }) 
    ] 




}); 

App.goalsController = Ember.ArrayController.create({ 
    content: [ 
     App.Goal.create({ goalTitle: 'Play a round of golf', timesPerWeek: 2 }), 
     App.Goal.create({ goalTitle: 'Range practice', timesPerWeek: 3 }) 
         ], 

    timesThisWeek: function() { 
      var value = "Play a round of golf"; 
      var value2 = this.goalTitle; 
     return App.postsController.filterProperty('goal_name', value).get('length'); 
     }.property('@each.goal_name') 

}); 

所以,我想我已經接近搞清楚了這一點,但不能完全得到它甚至儘管我確定我忽略了一些非常簡單的事情。當我在timesThisWeek函數中放置一個靜態目標名稱值時,(var值)timesThisWeek計數適用於該特定目標。但是,如果我嘗試爲handlebars迭代器(var value2)添加「this」,我無法使timesThisWeek爲相關目標工作。

我相信這是非常基本的,但任何幫助將不勝感激!

回答

1

得到它運行使用CollectionView,並在視圖中移動的項目的綁定過濾@http://jsfiddle.net/MikeAski/KzK3B/5/

在模板:

{{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('[email protected]') 
}); 

但是你可能還移動此屬性作爲成員或Goal模型(這取決於您的實際使用情況:我認爲你也有有不同的結果時間框架等)

編輯

最新版本:http://jsfiddle.net/MikeAski/z3eZV/

+0

真棒,感謝您的快速反應!出於某種原因,我無法將其集成到當前的應用程序中並正常工作,但我會繼續努力。另外,還有幾個簡單的問題:1)爲什麼使用self = this?我已經看了幾次,但還不知道爲什麼它很有用。 2)我正在考慮讓timesThisWe離開Goal模型,因爲如果它不在模型中,我認爲可能會更容易地過濾另外的時間,但是您是否認爲這將是一個明智的決定,在目標模式本身?我打算使用ember-data和rails來實現持久化,並希望得到最好的解決方案 – 2012-04-05 00:11:17

+0

1)Ho ...是的,'self'是休息... :-P 2)那麼,如上所述,這取決於在個人背景下,但我個人而言,我會把它放到模型中,因爲它是存儲業務邏輯的好地方(這個'timesThisWeek'差不多是)。 – 2012-04-05 05:51:01

+0

感謝您的迴應!我更新了JS小提琴 - 我似乎無法在添加新帖子時正確觸發綁定。 http://jsfiddle.net/jjohnson/sbytv/1/當單擊「添加帖子」按鈕時,timesThisWeek不會更新。我試過@ each.goal_name等等,但沒有任何工作。有任何想法嗎? – 2012-04-05 05:58:01