问题标签 [backbone-routing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1388 浏览

backbone.js - 如何使用主干和 requirejs 定义/使用多个路由

我将我的应用程序分成几个应用程序。

1)当我尝试使用路由器时app1,它们可以工作。
2) 当我尝试在 中使用路由器时app2,它们不起作用。3)如果我在工作中的路由器中
注释该行。'js/app1/routing',main.jsapp2

为什么我会得到这种行为?
在 github 上是否有一些使用多个路由和 requirejs 的应用程序示例?

谢谢。

这是我的代码:


** main.js **


** app.js **


** app1/路由 **


** app2/routing.js **

0 投票
0 回答
184 浏览

javascript - Web 应用程序模块的单元测试

我正在使用Backbone.Marionette为子应用模块编写茉莉花单元测试

有人可以给我一些想法,测试什么?

要测试的模块如下所示。


我会做这样的事情,但我不确定这是否合适:


0 投票
1 回答
501 浏览

javascript - Backbone.js 路由 - 将键/值附加到 URL

我有一个案例,我使用这些路由的不同视图的选项卡:#view/list 和#view/table,但我也有过滤器,它们在不同的视图之间工作,它们的路由是#filter/all,#filter/key,等等

因为我的标签有这些链接:

我的过滤器是:

什么是组合路由的最佳方式,所以当我打开一个视图然后选择一个过滤器时,我的 URL 应该变成 ..#view/list/filter/key

0 投票
1 回答
762 浏览

backbone.js - 在 MAMP 上运行的骨干样板,无法让路由器工作

我目前正在使用主干样板并在我的 MAMP 服务器 localhost 上运行它。我似乎无法让路由器工作

它只是不断地达到索引功能。

我已将其放入我的网址“ http://localhost:8888/OutfitApp/#photo *”和“ http://localhost:8888/OutfitApp/photo

两者都不起作用。

我删除了

没有任何东西进入我的控制台。

我很困惑我错过了什么??

0 投票
1 回答
2251 浏览

backbone.js - Backbone.js 路由器初始化函数

我对backbone.js 还是很陌生,并且仍在学习一切是如何工作的。我正在尝试了解initialize骨干路由器的选项是如何工作的,并且无法找到任何好的文档或示例,所以我希望这里有人可以帮助我理解它。我其实有几个关于它的问题......

  1. 如果我定义了具有多个路由的路由器,那么initialize每次调用其中一个路由时是否调用该函数并调用router.navigate??
  2. 将路由处理程序的执行延迟到初始化发生之后的最合适的方法是什么?

谢谢。

0 投票
2 回答
2273 浏览

jquery - 骨干路由器未能遵守 trigger=false 选项

Backbone.js 为其 Backbone.router 对象提供了一个navigate(fragment, [options])方法,该方法执行以下操作(根据文档):

每当您在应用程序中到达要保存为 URL 的点时,调用navigate以更新 URL。如果您还想调用路由函数,请将trigger选项设置为true。要更新 URL 而不在浏览器的历史记录中创建条目,请将replace选项设置为true

因此,简单的调用appRouter.navigate('page');可能会在www.myapp.com/page不触发相应路由的情况下将 URL 更改为。但是,我发现我的路由器重定向到 URL并触发了 page route,尽管trigger=false默认情况下。

因此,以下代码:

导航到 www.myapp.com 时产生以下控制台输出:

当预期的控制台输出应该只是:

该方法似乎违反了默认trigger选项。这是实现中的错误,还是我误解了什么?

0 投票
2 回答
3533 浏览

javascript - 如何防止 Backbone.js 中的路由?

当我从首页单击“取消”时 - 没关系。但是当我移至“第二页”时,“取消”不起作用。在这种情况下,路由器将应用程序重定向到“”路由。我需要防止这种重定向。

“取消” - 隐藏链接,“第二页” - 移动到第二页

创建视图并替换容器的 html

0 投票
1 回答
694 浏览

backbone.js - 在对路由处理程序的后续调用中,骨干视图未正确呈现

我在从路由处理程序(浏览器应用程序)成功呈现主干.js 视图时遇到问题。

我的 javascript 模块当前设置如下:

当我运行应用程序时,一切都运行良好......它按预期导航到主视图。我设置了带有处理程序的链接,以适当地导航到不同的路线,当我运行app.navigate('pre-sort', { trigger: true, replace: true})它时,它运行得很好,并按预期呈现列表中的预期项目。

当我尝试返回主视图,然后再次返回预排序视图时,问题就出现了……列表中的项目没有像我期望的那样显示在屏幕上。我只是得到pre-sort-actions-template没有附加子视图的空渲染。我已经单步执行了代码,并且可以看到集合已填充并且项目在那里......但由于某种原因,我的代码没有正确地将它们呈现到视图中,我似乎无法弄清楚为什么或我做错了什么。有任何想法吗??我对骨干很陌生,所以我确信这段代码写得并不完全正确……欢迎提供建设性的反馈。谢谢。

0 投票
2 回答
2267 浏览

backbone.js - Backbone.js 只读集合视图渲染

我的问题的快速总结:视图的第一次渲染包含集合中的元素,而第二次渲染不包含。请继续阅读以了解详细信息...

另外值得注意的是:我确实意识到以下代码代表了幸福的道路,并且有很多潜在的错误处理代码丢失,等等,等等......这是为了简洁而故意的。

我对backbone.js 很陌生,并且在找出为以下场景实施解决方案的正确方法时遇到了一些麻烦:

我有一个带有两个主要区域的页面,以包含/显示将成为应用程序主要布局的渲染内容。一般来说,它看起来像这样:

我有一个从中获取数据的 HTTP API,它实际上以 JSON 结果的形式提供各种模块的资源信息,这些信息来自OPTIONS对每个模块的基本 URL 的调用。例如,OPTIONS请求http://my/api/donor-corps返回:

该应用程序有一个我正在调用的主干集合,DonorCorpsCollection它将是一个只读DonorCorpModel对象集合,可能由多个不同的主干视图呈现并以不同的方式显示在应用程序的不同页面上(最终......稍后...... .目前情况并非如此)。该url属性DonorCorpsCollection将需要将对象的属性与初始调用结果的Url“GetDonorCorps”属性一起获取API模块资源(如上所示)。NameOPTIONS

该应用程序顶部有一个菜单栏,其中包含链接,单击这些链接将呈现应用程序的各个页面。目前,应用程序中只有两个页面,“主页”页面和“预排序”页面。在“主页”视图中,两个面板中都只有占位符信息,表明用户应该单击菜单栏上的链接来选择要执行的操作。当用户单击“预排序”页面链接时,我只想显示一个主干视图,该视图DonorCorpsCollection在操作面板中呈现为无序列表。

我目前正在使用JavaScript 模块模式来组织和封装我的应用程序代码,我的模块目前看起来像这样:

最后,这一切都使用以下 HTML:

到目前为止,当我一次点击“预排序”菜单链接时,我已经能够让它工作。当我单击它时,它会按预期呈现捐赠者军团的列表。但是,如果我然后单击“主页”链接,然后再次单击“预排序”链接,这次我会看到标题,但它<ul class="donor-corp-bins"></ul>是空的,其中没有列表项。...而且我不知道为什么或我需要做不同的事情。我觉得我一般理解backbone.js 视图和路由器,但在实践中,我显然遗漏了一些东西。

总的来说,这似乎是一个相当直接的场景,我不觉得我在这里尝试做任何特殊的事情,但我无法让它正常工作,而且似乎无法弄清楚原因。非常感谢您的协助,或者至少向正确的方向轻推。

0 投票
2 回答
1078 浏览

backbone.js - 骨干路由器、URL 和测试/生产 Web 上下文

在我的 Backbone 应用程序中,我有一个显示帖子预览的主视图。当用户点击帖子时,帖子会在叠加层中展开,并且 URL 会更改以反映该帖子。当帖子展开时,用户可能会做一些事情来触发需要在根上下文中发生的对服务器的调用。问题是当帖子展开时,需要在根上下文发生的服务器调用发生在帖子上下文中。以下是操作顺序:

  1. 页面加载了主视图 url:http://localhost:8080/my-web-app/
  2. 用户点击post,显示overlay,url更新为:http://localhost:8080/my-web-app/posts/1
  3. 用户单击触发对服务器的调用的内容。网址为:http://localhost:8080/my-web-app/posts/1/load,这是错误的。

在上面的示例中,加载操作需要从根上下文发生:http://localhost:8080/my-web-app/load

我尝试更改我的模型、集合等的 url 属性以包含前导 /,但这会删除“/my-web-app/”上下文(url 变为http://localhost:8080/load) ,这在我的测试环境中是必需的。当然,这在生产环境中可以正常工作。

为了解决这个问题,我将 Backbone.history 根选项设置为“/my-web-app/”,并将每个 url 属性覆盖如下:

虽然这种方法有效,但是像这样覆盖每个 url 函数是一件很痛苦的事情……更不用说,它感觉很hacky。对于生产环境,它也是完全不必要的代码。有没有更优雅的方法来管理它,以便它在测试和生产环境中都可以工作?

谢谢!