13

私は ng-boilerplate を使用しており、ユーザー構成に基づいて、本番環境で異なるテンプレートを使用する可能性を追加する必要があります。

.config(function config( $stateProvider ) {
 $stateProvider.state( 'demo', {
    url: '/demo',
    views: {
      "main": {
        controller: 'DemoCtrl',
        templateUrl: 'demo/demo.tpl.html'
      }
    }
  });
})

私の現在の考えは、templateUrl を動的にすることです

templateUrl: 'demo/demo'+userService.getTemplate()+'.tpl.html'

次のような複数のテンプレート ファイルがあります。

  • demo.tpl.html (デフォルト)
  • demo.b.tpl.html (バージョン b)
  • demo.c.tpl.html (バージョン c)

userService 関数は、使用するテンプレートのバージョンを提供します (例: ".b")。

同意しますか?この問題に対するより良い/より簡単なアプローチはありますか?

4

4 に答える 4

11

AngularJS 標準$routeProviderは、templateUrl の関数を受け入れることができます。ただし、この関数にサービスを挿入することはできません。

ui-router必要なものを挿入できるパラメーターがtemplateProviderあり、リモート テンプレートの場合は次のようなものを返す必要があります。

$stateProvider.state('demo', {
    templateProvider: function ($http, $templateCache, $stateParams, userService) {
        var url = 'demo/demo' + userService.getTemplate() + '.tpl.html';
        return $http.get(url, { cache: $templateCache }).then(function (response) {
            return response.data;
        });
    }
})
于 2013-08-27T17:48:59.163 に答える