基于服务器响应的Angular Open Controller/View



我有一个具有不同类型页面的角应用,所有这些都在基本URL之后通过slug识别,因此如下:

http://example.com/slug-a
http://example.com/slug-b

slug a和b具有不同的类型,需要以不同的视图渲染。从服务器中获取了slug a和b标识的对象的数据,并且角度应用程序应该根据对象类型更改视图。

是否可以在Ngroute的$ RouteProvider中处理此问题?我找不到任何有助于我的文档,而且我敢肯定我不是第一个尝试这个的文档。

所以,简而言之:

  • 客户端请求slug a => Angular请求从Server =>带有模板A。
  • 的Angular Loads Controllera
  • 客户端请求slug b => Angular请求从Server =>带有模板B
  • 的Angular Loads Controllerb

基于服务器响应的不同视图。

我认为您不能在路由器中执行此操作。但是您可以通过$location服务将用户重定向到其他位置。像这样

// somewhere inside your controller 
var promise = loadData().then(data => {
    if (data.slugA) {
        $location('path_to_slugA');
    }
    else if (data.slugB) {
        $location('path_to_slugB');
    }
    else {
    // do something else
    }
});

好吧,我已经使用了另一种和更简单的方法解决了它。(不知道为什么我以前没有弄清楚)

$routeProvider.when('/:slug/', {
    controller: 'SlugController',
    template: '<div ng-include="template"></div>'
});

然后,SlugController通过设置$ scope.template来提出请求并加载正确的模板。在模板文件中,连接到根元素的控制器。

简单但有效..:)

最新更新