2014-07-22 49 views
0

我想做一個簡單的事情列表(沒有數據庫 - 一切都會消失),當你點擊完整的按鈕時,任務會得到一個通過。直到你添加另一個任務,然後通過消失。有任何想法嗎?骨幹模型恢復到原始狀態

ToDoList.Views.TaskView = Backbone.View.extend({ 
    initialize: function() { 
    this.listenTo(this.model, 'all', this.render); 
    }, 
    tagName: 'li', 
    template: _.template($('#task-template').html()), 
    render: function() { 
    var that = this; 
    var renderedHTML = this.template({task: this.model.toJSON()}); 
    this.$el.html(renderedHTML); 
    return this; 
    }, 
    events: { 
    'click [data-action="delete"]': 'markAsComplete' 
    }, 
    markAsComplete: function() { 
    this.$el.css('text-decoration', 'line-through'); 
} 
}); 

該模板只是一個名稱和一個按鈕,工作正常。謝謝!

+0

您能否展示您的模型和視圖設置代碼?我的猜測是,它與你在模型上的所有事件上渲染的事實有關,它覆蓋了你正在應用的「文本修飾」。更好的方法可能是在模板中使用模型中的'complete'屬性來爲其添加'完成'類和樣式。這樣您就不需要在視圖中手動設置它,並且可以在需要時安全地重新渲染。 –

+0

下面的答案工作,但謝謝你看這個! – dshamis317

回答

0

這看起來像很多公司由於只使用CSS來做到這一點

this.$el.css('text-decoration', 'line-through'); 

如果它沒有被重新呈現將如何重新渲染知道,雖然打呢?

您需要更改任務的屬性以將其標記爲完整。並根據該屬性進行渲染。而不是隨意添加CSS

+0

謝謝!我添加了一個'complete'屬性和切換函數來渲染穿透。 – dshamis317