我开始使用骨干网,并且在路由部分方面遇到了一些麻烦。
这是我的简单页面http://superduper.dk/
// ABOUT MODEL
var AboutModel = Backbone.Model.extend({
urlRoot:'http://jsonplaceholder.typicode.com/posts',
});
var aboutModel = new AboutModel({
});
// ABOUT VIEW
var AboutView = Backbone.View.extend({
template: _.template('<h1><%= title %></h1> <p><%= body %></p>'),
initialize: function() {
this.listenTo(this.model, 'change', this.render);
},
render:function(){
var attributes = this.model.toJSON();
this.$el.html(this.template(attributes));
}
});
// CASES MODEL
var CasesModel = Backbone.Model.extend({
urlRoot:'http://jsonplaceholder.typicode.com/posts',
});
var casesModel = new CasesModel({
});
// CASES VIEW
var CasesView = Backbone.View.extend({
template: _.template('<h1><%= title %></h1> <p><%= body %></p>'),
initialize: function() {
this.listenTo(this.model, 'change', this.render);
},
render:function(){
var attributes = this.model.toJSON();
this.$el.html(this.template(attributes));
}
});
// ROUTER
var Routes = new (Backbone.Router.extend({
routes:{
'' : 'index',
'cases' : 'cases'
},
index:function(){
console.log('about');
var aboutView = new AboutView({model:aboutModel, el:'#view'});
aboutModel.fetch();
},
cases:function(){
console.log('cases');
var casesView = new CasesView({model:casesModel, el:'#view'});
casesModel.fetch();
},
start:function(){
Backbone.history.start({pushState: true})
}
}));
$(document).ready(function(){
Routes.start();
})
$(document).on("click", "a", function(e)
{
var href = $(e.currentTarget).attr('href');
var res = Backbone.history.navigate(href,true);
//if we have an internal route don't call the server
if(res)
e.preventDefault();
});
<ul>
<li><a href="/">About</a></li>
<li><a href="/cases">Cases</a></li>
<li><a href="http://www.contact.dk">Contact</a></li>
</ul>
<div id="view"></div>
当页面加载时,您将看到about视图,然后导航到“Cases”并返回“About”视图 - 那么about视图不再显示...?
< / LI>当我复制链接http://superduper.dk/cases
并将其粘贴到浏览器中时,我收到“未找到页面”。为什么它不显示页面...当我从根网址导航到它时它可以工作?
当我点击页面上的联系人链接时,它会导航到http://www.contact.dk
,但当我使用浏览器后退按钮时,它会转到http://superduper.dk/http://www.contact.dk
,如果我再次点击浏览器后退按钮,显示“找不到页面”..?
答案 0 :(得分:0)
Backbone路由器(以及大多数SPA框架的导航机制)基于散列片段工作,观察hashchange event
。 (除非您使用的是历史API,我认为您并非如此)
如果我输入for( i in 1:4 ) {
for( j in 2:4 ) {
if(x[j,i] == 1 && y[j-1,i] == 0) {
y[j,i] = 1
}else{
if(x[j,i] == 0 && y[j-1,i] == 1) {
y[j,i] = 0
}else{
y[j,i] = y[j-1,i]
}
}
}
,则视图已正确初始化。
您应该将超链接更新为(除非您使用历史记录API,当然)
http://superduper.dk/#cases