2013-06-11 21 views
5

Tôi đang tạo ứng dụng có trình quản lý tệp như chức năng với Ember.js. Tôi muốn URL cho thư mục lồng nhau ở dạng ".../#/files/Nested/Inside /" và nó hoạt động tốt với linkTo; tuy nhiên nếu tôi làm mới (hoặc truy cập trực tiếp vào URL), tôi có thông báo lỗi "Không có tuyến đường nào phù hợp với URL '/ tệp/Lồng nhau/Bên trong'". Có cách nào để làm cho Ember.js hoạt động trong tình huống như thế này không? Cảm ơn.Ember.js Thư mục lồng nhau như tuyến đường (chứa dấu gạch chéo)

Đây là hiện tại thiết lập tuyến đường của tôi:

FM.Router.map(function() { 
    this.resource('folders', { path: '/files' }) 
    this.resource('folder', { path: '/files/:path' }) 
}) 

FM.FoldersRoute = EM.Route.extend({ 
    model: function() { 
    return FM.Folder.find('/') 
    } 
}) 

FM.FolderRoute = EM.Route.extend({ 
    model: function(params) { 
    return ns.Folder.find(params.path) 
    }, 
    serialize: function(folder) { 
    return { path: folder.get('path') } 
    } 
}) 

Trả lời

6

Wow, câu hỏi thú vị. Nó nên là có thể nhưng tôi đã không thử nó bản thân mình hoặc nhìn thấy bất kỳ ví dụ này trong tự nhiên.

Dưới mui xe, ember sử dụng dấu ngãvà route-recognizer để giải quyết tuyến đường. readme của route giải thích làm thế nào để define more elaborate routes như:

router.map(function(match) { 
    // this will match anything, followed by a slash, 
    // followed by a dynamic segment (one or more non- 
    // slash characters) 
    match("/*page/:location").to("showPage"); 
}); 

Vì vậy, để có được thư mục lồng nhau làm việc, bạn có thể làm điều gì đó như thế này:

FM.Router.map(function() { 
    this.resource('folders', { path: '/files' }) 
    this.resource('folder', { path: '/files/*path' }) 
}) 

Hope this helps.

+0

Nó hoạt động. Cảm ơn! – tungd

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