gpt4 book ai didi

jquery - 文件准备好后如何调用Backbone初始路由?

转载 作者:行者123 更新时间:2023-12-01 01:08:27 25 4
gpt4 key购买 nike

codeschool.com 的第 7 级Backbone 类(class)有以下代码,并指出整个事情可以用以下 jquery 启动

$(function(){ TodoApp.start() })

它将调用Backbone.history.start。但是对 Backbone.history.start 的调用最终如何导致调用 index 以便调用 fetch 来填充模型集合todoList.

var TodoApp = new (Backbone.Router.extend({
routes: { "": "index", "todos/:id": "show" },
initialize: function() {
this.todoList = new TodoList();
this.todosView = new TodoListView({collection: this.todoList});
$('#app').append(this.todosView.el);
},
start: function(){
Backbone.history.start({pushState: true});
},
index: function(){
this.todoList.fetch();
},
show: function(id){
this.todoList.focusOnTodoItem(id);
}
}));

最佳答案

如果你看Backbone source ,您可以看到发生了什么。

History.start末尾,您可以看到它调用了loadUrl,如下所示:

// Attempt to load the current URL fragment. If a route succeeds with a
// match, returns `true`. If no defined routes matches the fragment,
// returns `false`.
loadUrl: function(fragmentOverride) {
var fragment = this.fragment = this.getFragment(fragmentOverride);
var matched = _.any(this.handlers, function(handler) {
if (handler.route.test(fragment)) {
handler.callback(fragment);
return true;
}
});
return matched;
},

当您添加路由时,它们将被添加到 this.handlers 中。由于有一个与“index”匹配的处理程序,因此会调用回调。

关于jquery - 文件准备好后如何调用Backbone初始路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14887133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com