在Backbone with Rails 3.x中面临多个路由器的问题
Facing issues in Backbone With Rails 3.x, for multiple routers
在其中一个rails应用程序中,我正在尝试使用带有"rails-backbone"gem的主干,我已经使用脚手架创建了一个模型,该模型工作正常。但我有另一个模型,我正在尝试为它使用不同的路由器,但是当尝试从 index.html.erb 实例化该路由器时,它会触发,"未捕获的类型错误:未定义不是一个函数",这显然意味着没有这样的路由器。但它就在那里,甚至在开发人员的工具中,它也会显示那些JS文件。我尝试了所有不同的方法,但没有奏效。提前谢谢。
我猜你是这样定义路由器的:
class SomeRouter extends Backbone.Router
# router code goes here
然后你尝试创建一个:
r = new SomeRouter
但是 CoffeeScript 会将您的文件包装在一个函数中,以防止范围蔓延:
尽管为了清楚起见,本文档中禁止显示所有 CoffeeScript 输出,但所有 CoffeeScript 输出都包装在一个匿名函数中:
(function(){ ... })();
此安全包装器与自动生成var
关键字相结合,使得意外污染全局命名空间变得极其困难。如果要创建顶级变量供其他脚本使用,请将它们作为属性附加到窗口或 CommonJS 中的导出对象上。存在运算符(如下所述)为您提供了一种可靠的方法来找出在哪里添加它们;如果您同时面向 CommonJS 和浏览器:
exports ? this
该包装器将SomeRouter
隐藏在函数中,因此在定义它的文件之外不会有可见SomeRouter
。
Rails/Backbone 应用程序中的一个常见解决方案是自己管理命名空间。在任何其他命名空间之前设置自己的命名空间(Java|咖啡)脚本将被拉入:
# AppName is just a placeholder, you'd use something more
# sensible in real life.
window.AppName =
Routers: { }
Views: { }
Models: { }
Collections: { }
然后将路由器定义为:
class AppName.Routers.SomeRouter extends Backbone.Router
#...
后来:
r = new AppName.Routers.SomeRouter
与需要全局可见的模型、集合和视图类似。
- 使用AngularJS UI路由器时出现元素绑定问题
- Backbone.js路由器和Internet Explorer重定向问题
- 从铁路由器访问模板中的数据上下文数据时出现问题
- 在Backbone with Rails 3.x中面临多个路由器的问题
- 角度 UI 路由器后退按钮问题
- 简单的 NodeJS 路由器问题 -- 行为异常的案例语句
- 在 ui 路由器中将参数传递到子状态时出现问题
- 角度 ui 路由器的问题 - 我无法将过滤器应用于指令中的重复
- 使用Browserify插入主干路由器时出现问题
- Meteor中的Iron路由器包问题
- 主干路由器问题
- angularjs路由器和jquerys的url碎片问题
- transitionTo的UI路由器问题
- 使用Angular的URL中的参数's的UI路由器,问题为.否则
- Auth时angular ui路由器的问题
- 设置React路由器时出现问题
- Marionette JS路由器出现问题
- Windows 7 x64 (Meteor 0.8.3)上的铁路由器(最新)安装问题
- ui问题.angularjs中的路由器
- 骨干路由器问题-当通过URL访问时不会加载特定的操作