23

複数のタグを含む 1 つの html ファイルを作成したいと考えています。これらは、通常はパーシャル フォルダーに保持される個別のビューとして機能する必要があります。そして、ルーティングコントローラーでそれらを指定したいと思います。今のところ、私は次のようにしています: app.js

    angular.module('productapp', []).
    config(['$routeProvider', function($routeProvider) {
    $routeProvider.
        when('/productapp', {templateUrl: 'partials/productList.html', controller: productsCtrl}).
        when('/productapp/:productId', {templateUrl: 'partials/edit.html', controller: editCtrl}).
        otherwise({redirectTo: '/productapp'});
        }], 
        ['$locationProvider', function($locationProvider) {
            $locationProvider.html5Mode = true;
}]);

index.html

    <!DOCTYPE html>
<html ng-app = "productapp">
<head>
<title>Search form with AngualrJS</title>
        <script src="../angular-1.0.1.min.js"></script>
        <script src="http://code.jquery.com/jquery.min.js"></script>
        <script src="js/products.js"></script>
        <script src="js/app.js"></script>
</head>
<body>
    <div ng-view></div>
</body>
</html> 

パーシャル フォルダー: edit.html と productlist.html という名前の 2 つの html ビューがあります。

これらの 2 つのファイルを作成する代わりに、それらを 1 つにまとめて、ルーティングを介してそれら (div) を呼び出したいと思います。どうすればいいですか?

4

3 に答える 3

42

ルート パラメーターに応じて、ng-switch を使用して、productList を include で条件付きでレンダリングできます。

あなたの設定でこれを試してください:

    angular.module('productapp', [])
      .config(['$routeProvider', function($routeProvider) {
      $routeProvider
        .when('/productapp', {templateUrl: 'partials/productList.html', controller: productsCtrl})
        .when('/productapp/:productId', {templateUrl: 'partials/productList.html', controller: productsCtrl})
        .otherwise({redirectTo: '/productapp'});

そしてあなたのコントローラーで:

    function productsCtrl($scope, $routeParams) {
      $scope.productId = $routeParams.productId;
    }

そしてあなたのhtmlで:

    <...productListHtml...>
    <div ng-switch="productId != null">
      <div ng-switch-when="true" ng-include="'partials/product.html'">
    </div>
于 2012-09-25T14:10:17.550 に答える
0

$routerProvide は複数の ng-view をサポートしていないため、ビューのネストと Angular でのディープ リンクに問題がありまし。これは、リクエスト コンテキストとレンダー コンテキストを使用して手動でルートを処理することに基づいています。

于 2013-01-18T13:57:47.280 に答える
0

私は同じ問題を抱えていましたが、 UI-Routerを使用した解決策があります。

ngRoute ではなくこれを使用する利点は、「ui-view」命名規則を使用して同じページに複数のビューを表示できることです。

于 2016-04-10T11:56:23.450 に答える