2012-09-25 26 views
22

Tôi muốn tạo một tệp html duy nhất có nhiều thẻ. Chúng nên hoạt động như các khung nhìn riêng lẻ riêng lẻ thường được lưu giữ trong thư mục partials. Và sau đó tôi muốn chỉ định chúng trong bộ điều khiển định tuyến. Còn bây giờ tôi đang làm như sau: app.jstạo một chế độ xem html duy nhất cho nhiều chế độ xem một phần trong angularjs

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> 

trong thư mục partials: tôi có 2 quan điểm html tên edit.html và productlist.html

thay vì tạo 2 tệp này, tôi muốn kết hợp chúng thành một tệp riêng biệt và gọi chúng (các div) thông qua định tuyến. Tôi làm như thế nào?

+0

Vui lòng giải thích. Bạn có muốn thêm div vào index.html không? –

+0

không có trong index.html nhưng trong một số tệp html khác – z22

+0

tại sao không sử dụng jquery? hoặc chỉ javascript để hiển thị/ẩn div, tất cả trong cùng một div. – nycynik

Trả lời

42

Bạn có thể sử dụng ng-switch để điều kiện hiển thị danh sách sản phẩm của mình với một bao gồm, tùy thuộc vào thông số tuyến đường.

Hãy thử điều này trong cấu hình của bạn:

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'}); 

Và trong điều khiển của bạn:

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

Và trong html của bạn:

<...productListHtml...> 
    <div ng-switch="productId != null"> 
     <div ng-switch-when="true" ng-include="'partials/product.html'"> 
    </div> 
0

tôi có vấn đề với quan điểm làm tổ và liên kết sâu trong Angular như $ routerProvide không hỗ trợ nhiều ng-view .. Nhưng tôi đã tìm ra một giải pháp có thể làm thế nào để thực hiện điều này happe n here. Nó dựa trên các tuyến giao tay bằng cách sử dụng ngữ cảnh yêu cầu và ngữ cảnh hiển thị.

0

I Had cùng một vấn đề, bây giờ có một giải pháp cho nó sử dụng: UI-Router

Ưu điểm của việc sử dụng này và không phải là ngRoute là bạn có thể có nhiều quan điểm trong cùng một trang sử dụng "ui-view " quy ước đặt tên.

Các vấn đề liên quan