gpt4 book ai didi

backbone.js - 使用backbone.js创建链接的首选方式

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

我正在尝试围绕backbone.js 进行思考,但由于缺乏(IMO)好的示例,我发现它很难。

首先,获取对象链接的最佳方式是什么。
如果我想获得 Album 的编辑 url我可以做的模型album.url() + '/edit' ,这真的是最好的方法吗?

另外,我试图让我的应用程序在没有 javascript 的情况下 100% 工作,所以我不希望我的 URL/链接说 /albums/#1/edit , 我希望它是 /albums/1/edit并在 JS 中覆盖它。

我在想我创建普通 URL 并使用 jQuery.live调用router.navigate在主干.js
然而,当我调用 router.navigate('/albums/2', true) 时,我从来没有让这个工作。 URL 更改但我的显示操作从未被调用。如果我刷新它,它就会被调用,所以路线是匹配的。

我错过了什么?

最佳答案

令人沮丧的基本答案是“没有首选方式!”。 Backbone.js 不会告诉您如何设置链接,您可以按照自己喜欢的方式进行操作。我发现这种灵 active 和你一样烦人,至少一开始是这样。

所以这就是我在 my current project 上处理这个问题的方式,有一个(大)警告,这只是在 Backbone 中做事的众多方法之一:

  • 在大多数情况下,我不使用实际链接。没有明确的理由不这样做,但这意味着您必须跟踪一堆必须保持一致的 URL 字符串。我宁愿在我的路由器中保留所有 URL 格式,而不是在其他地方处理它。
  • 为了打开一个新的“顶级” View ,比如一个编辑屏幕,我设置了一些触发事件的东西。在我目前正在处理的应用程序中,我有一个全局状态模型,要打开一个新 View ,我调用 state.set({ topview: MyTopView }) .这会导致 state触发对象change:topview .
  • 任何需要在顶级 View 更改时更改的 UI 都有一个绑定(bind)到 change:topview 的更新方法。 .当事件触发时,他们查看 state.get('topview')并根据需要进行更新。
  • 我将我的路由器视为 UI 的边缘特殊部分——它们本质上是在浏览器地址栏中呈现的 View ,而不是在窗口中呈现的 View 。像其他 View 一样,它们更新 state UI 事件上的对象(即新 URL),并且像其他 View 一样,它们监听 state导致它们更新的更改的对象。编辑画面有 URL albums/<albumid>/edit 的逻辑完全封装在路由器中,其他地方我就不提了。

  • 这对我来说效果很好,但它在 Backbone 结构中添加了一个全新的模式,即全局 State 对象,所以我很难称其为“首选”方法。

    更新:另请注意 .url() ,在 Backbone 成语中,指的是模型在后端 API 中的 URL,而不是前端 URL(它不像 Django 的 get_absolute_url )。默认 Backbone 设置中没有任何方法可以为您的模型提供面向用户的 URL - 您必须自己编写。

    关于backbone.js - 使用backbone.js创建链接的首选方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7624373/

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