events
  • backbone.js
  • render
  • 2012-11-22 79 views 0 likes 
    0

    一些非常簡單的問題,對於那些經驗豐富的骨幹, 但仍然,這裏的答案會非常有益。沒有尋找一個功能性的答案,而是更多地關注這個具體例子的真實情況。Bbone渲染行爲/切換

    用下面的代碼(一些簡單的添加/刪除喜愛)這裏

    render: function() { 
        $(this.el).html(this.model.get('name')); 
        $(this.el).append("<span class='unfav'>remove</span>"); 
        $(this.el).append("<span class='fav'>add</span>"); 
        if(this.model.get("selected") == true){ 
         $(this.el).addClass("selected"); 
        } // Should we really need to have an 'else' conditions here that removes the clas :(? sound weird to me. 
        return this; 
    } 
    

    的完整代碼http://jsfiddle.net/eHAfY/3/ (感謝@cymen的代碼庫)

    添加元素後,

    不要理解爲什麼當我點擊'添加'時該項目被改變,而不是當我點擊刪除時:如果有一個條件,當真實時有效果,爲什麼這個班還在這裏嗎?

    +2

    這聽起來像是視圖沒有再次呈現。你確認它是?你要綁定哪個事件來呈現視圖(換句話說,我們需要一個更完整的例子)? – Cymen

    +0

    對不起,我忘了添加初始化部分,根據我的理解,通過改變它,應該做到預期的。 – Ben

    +0

    所以是的,如果我console.log東西都爲addToFavorite和removeFromFav函數,渲染被稱爲 – Ben

    回答

    1

    您的渲染方法將其內部的HTML擦除爲$(this.el).html(...);,這是渲染方法通常期望執行的操作。

    使用$(this.el).addClass("selected");只有當model.selected爲true時,纔會修改外部容器,並且您的視圖無法知道當條件爲false時它應該移除此類。

    +0

    我明白了,非常感謝。我還有另外一種模式可以遵循這種行爲嗎?還是經常這樣做? – Ben

    +0

    @Ben我儘量避免直接操作元素,並讓模板照顧事物的html方面。但是,如果您對此感到滿意,請繼續,您只需記住您的觀點是對容器狀態負責。 – nikoshr

    相關問題