yếu tố <select>
của bạn sẽ được ràng buộc với một mô hình với ng-model
, bạn có thể $watch
và sử dụng để cập nhật $location.path
hoặc $location.search
. Cá nhân, tôi khuyên bạn nên sử dụng $location.search
: bạn có thể thay đổi chỉ cần thông số bạn muốn và công việc của nó ít hơn một chút vì bạn không phải biết kiến thức về toàn bộ đường dẫn trong bộ điều khiển của mình.
Vì vậy, giả sử bạn có một yếu tố <select>
như thế này:
<select ng-model="selectedColor" ng-options="color for color in colors">
Bạn có thể sử dụng $watch
để xem giá trị ràng buộc của bạn và cập nhật $location.search
của bạn, đảm bảo để đặt nó vào null
nếu màu sắc là undefined
hoặc falsey (điều này xóa thông số tìm kiếm):
$scope.$watch('selectedColor', function (color) {
if (color) {
$location.search('color', color);
} else {
$location.search('color', null);
}
});
Bạn có thể muốn thiết lập liên kết hai chiều giữa thông số tìm kiếm và mô hình cục bộ của bạn để thay đổi này sẽ được phản ánh trong <select>
của bạn:
$scope.$watch('$location.search().color', function (color) {
$scope.selectedColor = color;
});
Sau đó, nó chỉ là vấn đề tiếp cận $routeParams.color
trong điều khiển chuyển của bạn.
Xem điều này plunk để có ví dụ hoàn chỉnh.
Nguồn
2013-02-06 16:05:29
Hoạt động như một nét duyên dáng, mặc dù vì lý do nào đó, hộp chọn sau đó sẽ chuyển thành không có gì được chọn thay vì màu đã chọn> –
Trong bộ điều khiển của bạn, đặt $ scope.color thành thông số màu từ tuyến đường. Lưu ý rằng nếu bạn đang sử dụng một mảng các đối tượng để tạo danh sách lựa chọn của mình, bạn sẽ cần phải đặt $ scope.color để trỏ đến một phần tử của mảng đó. Xem [bài đăng này] (http://stackoverflow.com/questions/14297560/how-to-make-a-preselection-for-a-select-list-generated-by-angularjs) để biết thêm thông tin. –
Tôi đang sử dụng các mảng sản phẩm để đưa vào danh sách lựa chọn, nhưng cũng đang sử dụng này (gạch dưới) để kéo tiêu đề màu độc đáo từ mảng 'code' $ scope.uniqueColours = function() { trở lại _. chuỗi giá trị ($ scope.products) \t \t .pluck ('colour_title') \t \t .flatten() \t \t .unique() \t \t.giá trị(); \t}; 'mã' để nó không còn phản ánh mảng sản phẩm ban đầu. không thể đặt $ scope.by_colour = $ routeParams.colour_title; –