2
我正在使用backbone.js作爲應用程序的前端。其中一個導航規則與身份驗證流程非常相似:應用程序只應呈現用戶請求的視圖(如果有某個可用信息)。否則,應該呈現另一個視圖。信息是否可用可以通過查詢服務器來決定。我迄今爲止嘗試:如何定義骨幹路由的默認行爲?
//Router table definition, etc...
var initialize = function(){
var appRouter = new AppRouter;
appRouter.on('route:somePage', withInfo(function(){
//render view for 'somePage'
}));
...
的功能如下:
function withInfo(f) {
$.ajax({
type: 'GET',
dataType: 'json',
url: '/path/to/info',
success: function (data, status, request) {
var info = $.parseJSON(request.responseText);
if (info){
f.call();
} else {
var defaultView = new DefaultView();
defaultView.render();
}
}
});
}
基本上,我想要做的就是定義一個默認行爲高階函數。如果默認行爲不適用,它應該調用另一個函數(在上面的代碼中命名爲f
)。但這並不如預期的那樣。實際作爲參數傳遞的函數並不總是在第一個代碼片段中聲明的函數。
是否有另一種方法可以做到這一點?
你不使用一個骨幹型號檢索和存儲信息數據的原因嗎? –
不,沒有。但是這對目前的問題有什麼影響嗎? –
不確定,但在我看來,你的withInfo方法重複已經由Backbone的模型結構處理的邏輯。假設信息數據只需要從服務器端檢索一次,爲什麼不將其存儲在模型中,並將基於模型上適當值的條件移動到路由函數? –