Nếu bạn vẫn đang phải vật lộn với tùy chọn ken, bạn có thể muốn thử một cái gì đó như thế này:
{{#each link in mainControls}}
<a {{action "goToLink" link}} {{bindAttr class="link.classes"}}>
{{link.name}}
</a>
{{/each}}
Và sau đó bạn sẽ cần hàm goToLink để xử lý tác vụ. Bạn có thể đặt nó trên Bộ sưu tập của bạn, nhưng nếu bạn không, nó là vụ phải bong bóng lên đến xử lý tuyến đường của bạn, trong đó, về mặt lý thuyết, nên làm cho mọi việc thực sự dễ dàng:
App.MyRoute = Ember.Route.extend({
// ... stuff ...
actions: {
goToLink: function(item) {
this.transitionTo(item.route);
}
}
});
Bạn có thể đọc thêm về Hoạt động , ở đây: http://emberjs.com/guides/templates/actions/
cập nhật
tôi đã đặt cùng một fiddle cho bạn, sử dụng mới nhất và vĩ đại nhất Ember.
Tôi đã thực hiện một thay đổi nhỏ về đề xuất ở trên, do một số giới hạn kỹ thuật mà tôi đã phát hiện.
Cụ thể, Tuyến đường chỉ có vẻ như có thể xử lý các hành động cho các trình điều khiển được tạo trong nội bộ bằng Tuyến đường. Đây là một vấn đề đối với menu điều hướng của chúng tôi, vì bạn đang thay đổi tuyến đường, trong khi nó vẫn còn trên màn hình.
Nếu tôi chuyển sang sử dụng trình trợ giúp "hiển thị" Handlebars để hiển thị menu, không có Bộ định tuyến nào sẵn sàng xử lý tác vụ. Tuy nhiên, bộ định tuyến hiện tại dường như luôn được nối trong chuỗi bong bóng để gửi "" trên bộ điều khiển. Vì vậy, tôi chỉ có bộ điều khiển gửi một sự kiện lên chuỗi để Router, và chúng tôi nhận được hạnh phúc định tuyến của chúng tôi.
Bạn có thể tìm fiddle, ở đây: http://jsfiddle.net/Malkyne/fh3qK/
Cập nhật 2
Dưới đây là một phiên bản của fiddle cùng, chỉ với (thật là thú vị không có giấy tờ) ApplicationRoute được sử dụng để trực tiếp xử lý các hành động, nếu không có bộ điều khiển phải thực hiện bất kỳ chuyển tiếp nào: http://jsfiddle.net/Malkyne/ydTWZ/
Dường như trình trợ giúp 'linkTo' nhận ra đối số đầu tiên là tên tuyến chính xác, không phải tên biến .. –
Có, nhưng làm cách nào tôi có thể hiển thị danh sách liên kết với các url khác nhau? – hoblin