2013-10-10 52 views
-1

流星的「todos」示例。有2/3行代碼我不明白。在todos.js文件中:在todos示例中

Template.todo_item.tag_objs = function() { 
    var todo_id = this._id; 
    return _.map(this.tags || [], function (tag) { 
    return {todo_id: todo_id, tag: tag}; 
    }); 
}; 

你能幫我嗎?

回答

1

tag_objs幫助程序返回一個標籤數組以便在todo_item模板中正確顯示它們。 他們可能已經返回「this.tags || []」,意思是「返回此待辦事項的標籤數組(如果有),否則返回一個空數組」。 如果直接返回數據的原始陣列,您使用此語法通過它必須循環模板:

{{#each tag_objs}} 
    {{this}} 
{{/each}} 

this關鍵字將指向當前標籤上迭代的,但它不是那麼明顯,從代碼清晰度的角度來看,開發人員有時更喜歡擁有一個專用的命名助手。 所以基本上這就是幫助器定義中所完成的內容:我們將每個標記值都強制映射到一個新構建的對象,並具有適當的「todo_id」和「tag」屬性,我們可以在模板代碼中引用它們,所以我們現在可以使用{{tag}}來代替{{this}}。

_.map根本轉變[ 「標籤1」, 「標籤2」, 「標籤3」]到

[{ 
    todo_id:"ID", 
    tag:"tag1" 
},{ 
    todo_id:"ID", 
    tag:"tag2" 
},{ 
    todo_id:"ID", 
    tag:"tag3" 
}] 
+0

不錯! :) 謝謝 – Ricklemer

相關問題