2012-12-08 77 views
0

使用骨幹我開始建立一個應用程序,我已經乾淨地分開一切。但是現在我有以下問題。我應該在哪裏應用主要邏輯,在視圖或模型中。 例如,我有一個觀點和一個模型,它被綁定到一個按鈕,當我點擊該按鈕,我不得不做出骨幹JS在哪裏放應用程序主邏輯

$.ajax(params) 

做我把視圖或視圖調用一個方法有:

this.model.doAction(params) 

你認爲哪種方法最好?

+0

取決於'$ .ajax(params)'在做什麼樣的事情我想。 –

+0

ajax請求然後我必須處理響應,它涉及視圖和模型中的更改 – Paranoid42

+0

可能應該在模型中,然後來自模型的事件將觸發視圖中的更改。 –

回答

0

您可以在視圖中定義events屬性,該屬性的格式爲{"event selector": "callback"},例如。 {"click .collapse": "collapse"}其中,collapse將是一個被定義爲視圖屬性的函數。然後在這個回調函數中編寫你的ajax請求代碼。

此外,除非我錯過了某些東西,「將視圖和模型綁定到按鈕」聽起來不正確。相反,您應該考慮一個與視圖的一個實例關聯的模型實例。只要模型實例的屬性發生更改,將觸發一個型號爲change的事件。您可以將視圖函數綁定到此事件,以便模型中的更改反映在視圖中。下面是一個簡單的例子

var Book = Backbone.Model.extend({ 
    // ... 
}); 

var BookView = Backbone.View.extend({ 

    initialize: function() { 
     this.model.bind('change', this.render, this); 
    }, 

    render: function() { 
     // here, make changes to the dom as per changes in model 
    } 
}); 

要與視圖實例模型相關聯,您可以通過它在實例化一個新的 視圖對象..

var book = new Book({ 
    title: "A great book"  
}); 

var view = new BookView({model: book}); 

view.model.set('author', 'AGreatAuthor'); 

設定函數調用將觸發更改事件並將導致調用視圖 的渲染功能。

有關完整示例,請參閱annotated source of Todos應用示例。

相關問題