用id获取骨干模型

SET*_*SET 17 backbone.js

我有一个项目列表,点击它们应该给用户带来详细信息(另一个视图).在我的路由器中,我有这样的路线:

'details/:id'   :   'details',
Run Code Online (Sandbox Code Playgroud)

现在,在详细功能中我应该获取我的对象(获取将触发新的视图渲染).但是我应该怎么做才能将骨干附加项ID发送到model.url?我现在有两种方式:

在获取时动态创建URL:

this.realty_object.fetch({url: SITE_PATH + 'blah/blah/' + id});
Run Code Online (Sandbox Code Playgroud)

这样的事情:

this.realty_object
    .set({id : id}, {silent: true})
    .fetch();
Run Code Online (Sandbox Code Playgroud)

但我怀疑这是正确的解决方案.怎么样?model.urlRoot和model.url()之间有什么区别.

SET*_*SET 34

正确的答案是使用模型的urlRoot属性.如果已设置,则模型ID将在获取时附加到此URL.所以它可能看起来像这样(对象与我的第一篇文章中的名称不同,但想法是相同的 - 通过id获取单个模型):

Group = Backbone.Model.extend({
    urlRoot: SITE_PATH + 'group/index',
});
Run Code Online (Sandbox Code Playgroud)

在途中:

this.group = new Group({id: id});
this.group.fetch();
Run Code Online (Sandbox Code Playgroud)

  • 这是正常的,除非你想保持模型实例完整,但只是在空白和填充状态之间移动它(例如:登录/注销用户).在这种情况下,我能找到的最好的解决方案是使用`silent:true`的OP的`.set`. (2认同)