2013-04-17 44 views
10

Tôi muốn sử dụng tuyến đường, nhưng tôi luôn muốn sử dụng cùng một mẫu điều khiển &. Tôi có các tuyến đường như thế này:Góc - tuyến đường khác, cùng mẫu/bộ điều khiển, phương thức tải khác nhau

**a/:albumid** 

**i/:imageid** 

Trong trường hợp đầu tiên tôi muốn tải một loạt các hình ảnh và thêm chúng vào một danh sách. Trong trường hợp thứ hai, tôi muốn tải một hình ảnh và thêm nó vào một danh sách.

Vì vậy, sự khác biệt chỉ trong tải dữ liệu. Cách hiệu quả nhất để làm điều này là gì?

Cũng có thể animate ng-show? Một cái gì đó giống như slideDown của jQuery?

Trả lời

22

Kiểm tra bài viết này, nó mô tả một cách để thực hiện chính xác những gì bạn muốn:

http://www.bennadel.com/blog/2420-Mapping-AngularJS-Routes-Onto-URL-Parameters-And-Client-Side-Events.htm

Tôi đã sử dụng kỹ thuật này, nó hoạt động tốt.

Tóm lại, một cái gì đó như thế này cho việc định tuyến:

$routeProvider 
    .when("https://stackoverflow.com/a/:album_id", { 
     action: "album.list" 
    }).when("/i/:imgid", { 
     action: "images.load" 
    }) 

Sau đó, trong bộ điều khiển của bạn, bạn có thể truy cập $route.current.action và làm điều thích hợp. Bí quyết là để tạo ra một chức năng trong bạn điều khiển mà tất cả công việc (bài báo gọi nó render()) và sau đó gọi hàm khi $ routeChangeSuccess cháy:

$scope.$on(
    "$routeChangeSuccess", 
    function($currentRoute, $previousRoute){ 
     // Update the rendering. 
     render(); 
    } 
); 
+1

Cảm ơn bạn! Bạn đã cứu ngày của tôi! –

0

Tôi tạo ra một chỉ thị siêu đơn giản để xử lý này cho phép các tuyến đường sẽ có nhiều tuyến đường như Rails hoặc Codeigniter hơn, nơi phương thức điều khiển nằm trong định nghĩa tuyến đường. Tên phương thức được đặt trong tùy chọn routeProvider.when và chỉ thị được đặt trong mẫu cho tuyến đường. Xem: https://stackoverflow.com/a/22714634/250991

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