Templates 主干路由器停止传播
这是一个主干前端 我在index.html上有这个模板Templates 主干路由器停止传播,templates,backbone.js,backbone-events,backbone-routing,Templates,Backbone.js,Backbone Events,Backbone Routing,这是一个主干前端 我在index.html上有这个模板 <script id="sportTemplate" type="text/template"> <ul> <li><%%= title %> <a href="#sports/<%%=id%>/events" class="events">Life events</a> </li> </ul> <
<script id="sportTemplate" type="text/template">
<ul>
<li><%%= title %>
<a href="#sports/<%%=id%>/events" class="events">Life events</a>
</li>
</ul>
</script>
有没有办法停止传播,让url只显示http://localhost:3000
而不是http://localhost:3000/#sports/100/events
谢谢你在主干应用程序中处理链接的更好方法是监听点击事件,尤其是当你不想更改url时
var User=Backbone.Model.extend();
var Users=Backbone.Collection.extend({
型号:用户,
网址:'http://jsonplaceholder.typicode.com/users'
});
var UserView=Backbone.View.extend({
标记名:“li”,
模板:35;.template($('#userTemplate').html()),
初始化:函数(){
_.bindAll(这是“showPosts”);
this.posts=新的posts([]{
网址:'http://jsonplaceholder.typicode.com/users/“+this.model.id+”/posts”
});
},
活动:{
“单击a.posts”:“openPosts”
},
render:function(){
this.el.html(this.template(this.model.toJSON());
归还这个;
},
openPosts:函数(evt){
evt.preventDefault();
this.posts.fetch().done(this.showPosts);
},
showPosts:function(){
userPostsView.showPosts(this.posts,this.model);
}
});
var UsersView=Backbone.View.extend({
标记名:“ul”,
初始化:函数(){
this.listenTo(this.collection,'add',this.addOne);
},
addOne:函数(用户){
var userView=newuserview({model:user});
userView.render().$el.appendTo(this.el);
}
});
var Post=Backbone.Model.extend();
var Posts=Backbone.Collection.extend({
初始化:函数(m,o){
this.url=o.url;
}
});
var PostView=Backbone.View.extend({
模板:35;.template($('#postTemplate').html()),
render:function(){
this.el.html(this.template(this.model.toJSON());
归还这个;
}
});
var PostsView=Backbone.View.extend({
初始化:函数(){
_.bindAll(这是“addOne”);
this.listenTo(this.collection'add',this.addOne);
},
活动:{
“单击。关闭”:“隐藏”
},
render:function(){
this.collection.each(this.addOne);
$('').prependTo(this.el);
$('Posts by'+this.model.get('name')+'.prependTo(this.el));
归还这个;
},
地址:功能(post){
var postView=new postView({model:post});
postView.render().$el.appendTo(this.el);
},
隐藏:函数(){
userPostsView.hide();
}
});
var UserPostsView=Backbone.View.extend({
初始化:函数(){
_.bindAll(这是“隐藏”、“移除PostsView”);
},
showPosts:功能(帖子、用户){
此.$el.removeClass('hidden');
如果(this.postsView)this.postsView.remove();
this.postsView=newpostsview({collection:posts,model:user});
this.postsView.render().$el.appendTo(this.el);
},
隐藏:函数(){
此.$el.addClass('hidden');
this.setTimeout(this,removePostsView,500);
},
removePostsView:function(){
this.postsView.remove();
}
});
var userPostsView=newuserpostsview({el:'#userPosts'});
var users=新用户();
var usersView=newusersview({collection:users});
usersView.render().$el.appendTo(document.body);
users.fetch()代码>
#用户帖子{
位置:绝对位置;
背景:rgba(255255,0.95);
最小高度:20px;
左:10px;
右:10px;
边框:1px实心rgba(0,0,0,0.1);
边界半径:2px;
填充物:5px;
过渡:0.5s;
能见度:可见;
不透明度:1;
}
#userPosts.hidden{
可见性:隐藏;
不透明度:0;
}
#userPosts>div>div{
显示:内联块;
最大宽度:150px;
最大高度:150像素;
垂直对齐:顶部;
溢出:隐藏;
利润率:10px;
字体大小:12px;
}
#用户帖子{
边际:0px;
颜色:#ccc;
}
#用户帖子,关闭{
浮动:对;
}
h4{
保证金:0;
}
h3{
利润率:10px;
}
在主干应用程序中处理链接的更好方法是侦听单击事件,尤其是当您不希望url更改时
var User=Backbone.Model.extend();
var Users=Backbone.Collection.extend({
型号:用户,
网址:'http://jsonplaceholder.typicode.com/users'
});
var UserView=Backbone.View.extend({
标记名:“li”,
模板:35;.template($('#userTemplate').html()),
初始化:函数(){
_.bindAll(这是“showPosts”);
this.posts=新的posts([]{
网址:'http://jsonplaceholder.typicode.com/users/“+this.model.id+”/posts”
});
},
活动:{
“单击a.posts”:“openPosts”
},
render:function(){
this.el.html(this.template(this.model.toJSON());
归还这个;
},
openPosts:函数(evt){
evt.preventDefault();
this.posts.fetch().done(this.showPosts);
},
showPosts:function(){
userPostsView.showPosts(this.posts,this.model);
}
});
var UsersView=Backbone.View.extend({
标记名:“ul”,
初始化:函数(){
this.listenTo(this.collection,'add',this.addOne);
},
addOne:函数(用户){
var userView=newuserview({model:user});
userView.render().$el.appendTo(this.el);
}
});
var Post=Backbone.Model.extend();
var Posts=Backbone.Collection.extend({
初始化:函数(m,o){
this.url=o.url;
}
});
var PostView=Backbone.View.extend({
模板:35;.template($('#postTemplate').html()),
render:function(){
this.el.html(this.template(this.model.toJSON());
归还这个;
}
});
var PostsView=Backbone.View.extend({
初始化:函数(){
_.bindAll(这是“addOne”);
this.listenTo(this.collection'add',this.addOne);
},
活动:{
“单击。关闭”:“隐藏”
},
render:function(){
this.collection.each(this.addOne);
$('').prependTo(this.el);
$('Posts by'+this.model.get('name')+'.prependTo(this.el));
归还这个;
},
地址:功能(post){
var postView=new postView({model:post});
postView.render().$el.appendTo(this.el);
},
隐藏:函数(){
userPostsView.hide();
}
});
var UserPostsView=Backbone.View.extend({
伊尼蒂
var appRoutes = Backbone.Router.extend({
routes: {
"sports/:id/events": "getEvents",
},
(...)
});