2015-05-20 19 views
14

Tôi đang phát xung quanh với bộ định tuyến góc mới và muốn thử sử dụng vỏ máy có thành phần và thành phần lồng nhau.Bộ định tuyến mới góc - Các thành phần và định tuyến lồng nhau

Dưới đây có mã JavaScript tôi đã viết để xác định hai thành phần và các tuyến đường:

angular.module('app', ['ngNewRouter']) 
    .controller('AppController', function ($router) { 

    $router.config([ 
    { 
     path: '/parent', 
     component: 'parent' 
    } 
    ]); 

}) 
.controller('ParentController', function ($router) { 

    this.name = 'Parent component'; 
    $router.config([ 
    { 
     path: '/child', 
     component: 'child' 
    } 
    ]); 

}) 
.controller('ChildController', function() { 

    this.name = 'Child component'; 

}) 
.config(function ($componentLoaderProvider) { 

    $componentLoaderProvider.setTemplateMapping(function (compName) { 
    return compName + '.html'; 
    }); 

}); 

Và phần HTML:

<!-- index.html --> 
<body ng-controller="AppController as app"> 
    <a ng-link="parent">Go to parent</a> 
    <div ng-viewport></div> 
</body> 

<!-- parent.html --> 
{{ parent.name }}<br/> 
<a ng-link="child">Show child</a> 
<div ng-viewport></div> 

<!-- child.html --> 
{{ child.name }} 

Dưới đây là một Plunker chứa đoạn code trên: http://plnkr.co/edit/yWCFgXQI491EYvIldjyR

Dựa trên mã này, tôi có các câu hỏi/vấn đề sau:

  1. Nếu tôi đi đến cấp độ thấp nhất (#/parent/child) và sau đó nhấn làm mới, các thành phần phụ huynh và con không được hiển thị nữa. Tuyến đường không được khôi phục mặc dù URL vẫn giống nhau. Tôi có cần phải đổi hướng hoặc làm điều gì đó để khôi phục trạng thái của trang không? Đây là một tính năng rất cơ bản để có thể đánh dấu các URL.
  2. Nếu tôi đi đến cấp độ thấp nhất (#/parent/child) và sau đó nhấp vào liên kết Tới liên kết mẹ, URL được đặt chính xác thành #/parent nhưng thành phần con vẫn hiển thị.
+0

vấn đề này có thể liên quan: https://github.com/angular/router/issues/222 – wemu

+0

một số cuộc thảo luận khác đang diễn ra tại https://github.com/angular/router/issues/117 cũng như – wemu

+0

Tôi cũng đã mở một vấn đề trên GitHub: https://github.com/angular/router/issues/334 – Alain

Trả lời

0

Điều đầu tiên gây ấn tượng với tôi là bạn không sử dụng bất kỳ số nhận dạng nào trỏ đến cha mẹ và con bạn muốn hiển thị.

Bạn nhận thông tin này ở đâu/ở đâu? url của bạn sẽ trông đẹp hơn rất nhiều (và thậm chí có thể giải quyết vấn đề nếu nó được viết như

/parent/:parentId/ 

hoặc

/parent/:parentId/child/:childId. 

tôi chủ yếu sử dụng routeProvider và routeParameters bản thân mình, và họ cung cấp chức năng này mà không cần bất kỳ rắc rối nào nhưng điều này có vẻ như excersise dường như hoàn toàn là học thuật, tôi sẽ cố gắng đọc qua những gì module thực sự đang làm cũng như kiểm tra xem có vấn đề nào liên quan đến vấn đề github hay không.

Hơn nữa, this page from the documentation đến làm sáng tỏ vấn đề.

Nếu điều này không giúp ích gì cho bạn, bạn có cân nhắc giúp chúng tôi bằng cách cung cấp thêm thông tin cho chúng tôi không?

Chúc may mắn!

0

Đây là Old Way #

var app = angular.module("app", ["ngRoute"]); 
 
app.config(function($routeProvider) { 
 
    $routeProvider 
 
    .when("/", { 
 
     templateUrl : "parent.htm" 
 
    }) 
 
    .when("/other", { 
 
     templateUrl : "Default.htm" 
 
    }); 
 
});

+0

** Sử dụng phương pháp mới để chúng ta có thể làm thực hiện định tuyến này ** (function() { 'sử dụng nghiêm ngặt.'; góc .module ('ứng dụng', ['parent', 'home', 'ngNewRouter']) .controller ('AppController', hàm ($ router) { this.header = 'TITLE'; $ router.config ([ { đường dẫn: '/', component:' home ' }, { đường dẫn:'/parent ', thành phần:' parent ' } ]); }); })(); ** Tôi hy vọng điều này sẽ hiệu quả. ** –

0

**Using new way we can do perform routing this .** 
 

 

 
(function() { 
 
    'use strict'; 
 

 
    angular 
 
    .module('app', ['parent', 'home', 'ngNewRouter']) 
 
    .controller('AppController', function ($router) { 
 
     this.header = 'TITLE'; 
 
     $router.config([ 
 
     { 
 
      path: '/', component: 'home' 
 
     }, 
 
     { 
 
      path: '/parent', component: 'parent' 
 
     } 
 
     ]); 
 
    }); 
 
})(); 
 
**I hope this will work .**

0

Bạn cũng có thể thử sử dụng UI Router.

Bạn cũng có thể xem this nếu bạn muốn sử dụng các tuyến lồng nhau.

+0

Câu trả lời chưa hoàn chỉnh –

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