首先,讓我通過說我對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)爲什麼使用self = this?我已經看了幾次,但還不知道爲什麼它很有用。 2)我正在考慮讓timesThisWe離開Goal模型,因爲如果它不在模型中,我認爲可能會更容易地過濾另外的時間,但是您是否認爲這將是一個明智的決定,在目標模式本身?我打算使用ember-data和rails來實現持久化,並希望得到最好的解決方案 – 2012-04-05 00:11:17
1)Ho ...是的,'self'是休息... :-P 2)那麼,如上所述,這取決於在個人背景下,但我個人而言,我會把它放到模型中,因爲它是存儲業務邏輯的好地方(這個'timesThisWeek'差不多是)。 – 2012-04-05 05:51:01
感謝您的迴應!我更新了JS小提琴 - 我似乎無法在添加新帖子時正確觸發綁定。 http://jsfiddle.net/jjohnson/sbytv/1/當單擊「添加帖子」按鈕時,timesThisWeek不會更新。我試過@ each.goal_name等等,但沒有任何工作。有任何想法嗎? – 2012-04-05 05:58:01