本地化的AngularJS路由

时间:2014-10-10 11:14:16

标签: javascript angularjs backbone.js angular-routing

我一直在编写BackboneJS,并使用BackboneJS和AMD成功构建了大型项目。

我现在正在研究使用AngularJS并且已经实现了AMD的实现,并且已经构建了一些控制器和服务,因此到目前为止非常舒适。

唯一的问题是我们构建了许多需要针对不同地区进行本地化的应用程序。因此我已经成功配置了Angular Translate,它运行正常。

Angular Translate不支持的是创建本地化的url路由,这是我能够通过动态更新路由对象在BackboneJS中轻松实现的。

任何人都可以指出我正确的方向发表关于如何使用AngularJS执行此操作的文章或帖子。一直在谷歌搜索,但似乎找不到任何东西!

1 个答案:

答案 0 :(得分:1)

因此,无论这是否是最适合您的解决方案,我将解释一下我们采用的方法,即使用 dumb Angular应用程序,需要在后端定义路由。因此,在运行时,我们的应用程序不知道用户所在的URL,我们所做的是以下内容:

  • 调用定义应用程序URL的服务
  • 验证检索到的网址
  • 调用$route.reload()基本上重启(它实际上并没有重新启动应用程序,只是再次运行路由解析器)应用程序

然后我们根据应用的功能定义路线,例如:http://foo.bar/product/:slug。因此,如果用户在http://foo.bar/product/foobar进入该应用程序,则运行时不知道foobar是否存在。这使我们能够保持用户界面愚蠢并在后端定义路线;因此...

  1. 在您的路线配置中设置基本路线,例如/product/:slug/page/:slug等......
  2. 创建一个工厂,保存一个布尔变量,即应用程序是否加载了本地化数据;如果它是假的,那么你的productpage等......控制器将默默地停在他们的init
  3. 在您的基本控制器中加载您的本地化数据,验证它等等...一旦您满意,然后运行$route.reload(),这次将出厂标志设置为true
  4. 您的productpage等控制器将再次被调用,但出厂标志为真,那么他们现在可以参考您加载的本地化数据
  5. 利润
  6. 希望它听起来并不痛苦,可以成为一个优雅的解决方案并且效果非常好。只要确保你有一个很好的礼貌装载机。