我将backbone.js 用于应用程序的前端。导航规则之一与身份验证流程非常相似:应用程序仅应在有特定信息可用时呈现用户请求的视图。否则,应该呈现另一个视图。信息是否可用可以通过查询服务器来决定。到目前为止我已经尝试过:
//Router table definition, etc...
var initialize = function(){
var appRouter = new AppRouter;
appRouter.on('route:somePage', withInfo(function(){
//render view for 'somePage'
}));
...
withInfo
功能如下:
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
如果默认行为不适用,它应该调用另一个函数(在上面的代码中命名)。但这并没有按预期工作。实际作为参数传递的函数并不总是在第一个代码片段中声明的函数。
还有另一种方法可以做到这一点吗?