2013-02-20 23 views
3

我有一個包含數據列表的視圖,並且我使用backbone stickit來進行模型綁定。在Backbone Stickit中使用可見與onGet結合使用

如果數據不可用,我不想顯示列表元素,但如果數據是可用的,我需要格式化,所以我已經試過以下綁定:

'.emailItem': { 
    observe: 'emailAddress', 
    visible: function(viewVal, modelVal){ return !!modelVal; }, 
    onGet: function (val) { 
    return '<span>E-mail</span><strong><a href="mailto:' + val + '">' + val + '</a></strong>'; 
    }, 
    updateMethod: 'html' 
}, 

.emailItem匹配元素<li class="emailItem"></li>

當我運行這個時,list元素顯示正確,但onGet的結果沒有插入到視圖中。如何在stickit中將visible屬性與客戶格式組合使用?

+0

您確定執行了'onGet'回調嗎?代碼看起來正確,假設你已經有了你列表中每個項目的視圖(以便類綁定匹配'li'元素)。 – WiredPrairie 2013-02-20 13:11:07

+0

我沒有每個列表項目的視圖,但這不應該是必要的,因爲元素與選擇器'.emailItem'和模型屬性'emailAddress'綁定? onGet被執行一次,因爲函數的輸出作爲viewVal參數發送到可見函數中,我猜。 – 2013-02-20 13:42:28

+0

啊 - 我認爲這是因爲'li'元素在郵件列表中。您是否嘗試過使用'id'屬性和'#emailItem'作爲綁定選擇器的實驗? – WiredPrairie 2013-02-20 17:29:43

回答

1

您使用的是什麼版本的Stickit?

我問,因爲我認爲這個問題可能會固定在主。你可以嘗試以下方法:

stickit master

如果它不能正常工作,請在GitHub上打開一個問題 - 我有非常積極和將得到的這條底線。

create new issue

+0

謝謝,我明天再檢查一下,回覆你:) – 2013-02-21 19:51:09

+0

升級到主人修好了!再次感謝。 – 2013-02-25 13:22:59

1

我已經找到了解決辦法:

'.emailItem': { 
    observe: 'emailAddress', 
    visible: true, 
    visibleFn: function ($el, isVisible, modelAttr) { 
     var value = this.model.get(modelAttr); 
     $el.html('<span>Email</span><strong><a href="mailto:' + value + '">' + value + '</a></strong>'); 
    } 
} 

這工作得很好,但這不是visibleFn應該被使用的方式。請讓我知道是否有更好的方法來做到這一點。

相關問題