Backbone Collection get(id) method
Backbone Collection get(id) method
我的应用程序中有一个主主页,每个帖子都有另一个页面,可以通过主页中显示的列表访问。。
我的路由器是这样的:
var AppRouter = Backbone.Router.extend({
initialize: function(){
this.model = new model();
this.collection = new collection();
},
routes: {
"" : "showForm",
"post/:id" : "showPost"
},
showPost: function(id){
var curmodel = this.collection.get(id);
var post = new postView({model:curmodel});
post.render();
$(".maincontainer").html(post.el);
},
showForm : function(){
var qcView = new qcV({model:this.model, collection:this.collection});
qcView.render()
$(".maincontainer").html(qcView.el);
}
});
这就是这个列表中帖子的链接之一的样子
<h2><a id= "<%=_id%>" href="#post/<%=_id%>"><%=name%></h2></a>
我的第一个问题是:以这种方式用基于哈希的URL链接页面是否危险?
我的第二个问题是:如果我点击主页中的一个链接,导航到帖子视图没有问题。我的url成功地更改为类似http://127.0.0.1:3000/#post/51ffdb93c29eb6cc17000034
的内容,并且呈现了特定帖子的视图。但是,在这一点上,如果我刷新页面,或者如果我直接在URL栏中键入http://127.0.0.1:3000/#post/51ffdb93c29eb6cc17000034
,则路由器中showPost方法中的this.collection.get(id)
方法将返回undefined
。有人能帮我弄清楚为什么会这样吗?
我检查了几次,我的initialize方法两次都被调用了,并且我的集合和模型成功地创建了
对于#2,您很可能不会在"post"路由上获取集合。尝试获取集合(如果不存在),然后调用render。那就行了!
我认为@Trunal的第二个问题是正确的。首先,不,这并不"危险"。与使用经典的服务器端应用程序(通过GET将信息传递到服务器以检索信息)相比,您实际上没有做任何不同的事情。在我看来,这应该是实现路由的首选方法(而不是试图手动触发backbone.history.navigate
,因为它避免了可能发生的各种设置和事件问题)。
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- difference between '$(<%= DDL.ID %>) & $('
- 使用Javascript获取所选选项ID
- 根据id将json数组组合为一个json数组
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 对id以某个字符串开头的元素进行计数
- 如果元素's的ID以数字开头
- 通过id和class属性获取元素
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- 使用当前日期生成随机id
- Javascript-ID冲突的几率
- Href:当前DIV中的目标ID
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- Javascript复选框函数:;缺少:在属性id之后"
- Twitter引导程序Typeahead-Id&标签
- 如何与特定ID交谈
- chart.series[id].remove()无法刷新高位图表/高位股票中其他系列的图例属性
- 如何在速度模板中获取LiferayPortlet实例id
- 谷歌地图可以't添加正确的标记ID
- Backbone Collection get(id) method