2015-08-25 100 views
0

我正在使用CoffeeScript和HAML。我有對象名單:使用hamlc解析對象屬性值

{ 
    title: "Title" 
    url: "http://example.com" 
    image_url: "img.png" 
    attributes: { 
    target: '_blank' 
    } 
} 
{ 
    // ... 
} 

而且我有一個模板:

- for item in @model.data 
    %a.menu-item{"href": item.url} 

我可以以某種方式解析「屬性」,如果它是存在的,並加入到%a.menu-item元素得到<a href="[item.ur]" target="_blank">

回答

0

如果您想合併所有哈希屬性,這應該工作:

%a.menu-item{item['attributes'], "href" => item['url']} 
+0

不,它不工作:( –

0

要有條件地包含一個標籤元素,請使用defined?技巧是在ternery中 - 將屬性值設置爲零將刪除它。 (https://gist.github.com/orioltf/3145400

爲例(試圖嘲笑你的情況有一些快速的Ruby代碼)這裏

- _h1 = {'title' => 'Title', 'url' => "http://example.com", 'image_url'=> "img.png", 'attributes'=> {'target'=> '_blank'}} 
- _h2 = {'title' => 'Title2', 'url' => "http://example2.com", 'image_url'=> "img2.png"} 
- $data_list = [_h1, _h2] 
- class Model; def data() $data_list end end 
- @model = Model.new 

- for item in @model.data 
    %a.menu-item{:href => item['url'], 
       :target => (defined? item['attributes']['target']) ? item['attributes']['target'] : nil} 

請注意,我使用哈希存取。根據你的對象設置,你使用的是什麼框架,你可以使用我做的,item.url,item.get('url')等。

你可以用haml測試來測試它。 haml test.html 希望能讓你開始。