簡體   English   中英

遍歷骨干Coffee-haml模板中的對象?

[英]Iteration over object in backbone coffee-haml template?

我試圖遍歷一個骨干收集對象,並將其屬性之一打印到haml咖啡模板(.hamlc)的未鏈接列表中。

在上下文中,我有一些字體。 我想將每種字體的名稱打印到模板上。

這就是代碼看起來的樣子:

%ul
  - for font in @fonts
    %li
      = font.name

但是,這根本不會重復。 我可以在此for循環中放入任何輸入,但它根本不會執行。

這是輸出到console.log時@fonts的樣子

Object {0: Object, 1: Object, 2: Object, 3: Object, 4: Object…}
0: Object
_id: "50bed321dbc554c7a0000005"
data: Object
name: "Actor"
user_ids: Array[0]
__proto__: Object
1: Object
2: Object
3: Object

如何遍歷此對象並輸出和打印模板中的每個名稱?

似乎您應該指定將要顯示的@fonts集合的哪個屬性,如下所示:

%ul
 - for font in @fonts.name
   %li
     = font

如果要遍歷對象或集合,請使用:

- for name, location of @fonts
  = name + "lives in" + location

(例如,如果您的字體對象具有名稱和位置屬性)

在您的代碼中,只需將'in'替換為'of'即可。

假設您的收藏看起來像這樣

var fonts = new Backbone.Collection;
fonts.add([
    { name: 'arial'},
    { name: 'arial black'},
    { name: 'comic sans ms'}]);

您不能僅僅通過以下方式獲取集合中第一個模型的名稱

font = fonts.first()
font.name               // <--- undefined

原因是因為Backbone模型不允許您直接操縱屬性。 他們有二傳手和吸氣劑。

font.get 'name'         // 'arial'

但是回到現在,您的模板很好,您只需要向其傳遞集合的JSON表示形式

var html = window.HAML.test({fonts:fonts.toJSON()});
document.getElementById('out').innerHTML = html;

如果出於某種原因,您不想將其傳遞給JSON表示形式,則可以將其傳遞給模型數組{fonts: fonts.models}但隨后您必須修改模板並使用類似%li = font.get 'name'

這是一個jsfiddle( 第一部分是coffee-haml產生的代碼http://jsfiddle.net/jaimem/qRMqu/2/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM