8

是否有任何内置服务/指令/路由来根据用户访问的浏览器/平台的类型更改视图(或使用路由的页面)?我希望手机和平板电脑拥有与桌面用户不同的视图。

4

2 回答 2

7

我不知道 Angular 有什么内置的东西,但你可以通过在路由规则中插入逻辑来做到这一点。例如:

angular.module('browser-routing', []).
  config(function($routeProvider) {
    $routeProvider.
      when('/', {templateUrl: getBrowser() + '.html'})
});

在此示例中,如果 getBrowser() 返回'iphone',它将呈现视图iphone.html

您可以使用 BrowserDetect来做顾名思义。

Chrome 和 Firefox 检测的小提琴示例

于 2012-08-28T05:23:19.673 回答
2

尽管 AngularJS 没有任何开箱即用的特定功能,但有许多不同的方法可以完成类似的事情:

  1. 使用CSS3 媒体查询进行响应式设计。根据您的需要,这可能是您最好的选择,因为您可以避免为多个视口重新实现功能。
  2. 您可以编写一个服务来检查并更改路线:

    myApp.factory('checkWidth', function ($location, $window) {
      return function () {
        if ($window.document.width < 700) {
          $location.url('/mobile');
        }
      }
    });
    
于 2012-08-28T16:59:45.817 回答