Tôi đang cố gắng làm một giao diện công cụ tìm kiếm với góc cạnh. Người sử dụng chọn một số thông số trong một hình thức, bấm vào nút "tìm kiếm" và sau đó nó lấp đầy các url với các thông số sử dụng $location.search()
làm thế nào để thiết lập mặc định 'chọn' ng-mô hình cho một đối tượng?
các thông số giao diện tìm kiếm được sử dụng để xây dựng các hình thức:
params = {
milestones: [ "a", "b", "c", "d", etc. ],
properties: [
{ "name": "name A", type: "text" },
{ "name": "name B", type: "checkbox" },
{ etc. }
]
}
bên trong bộ điều khiển :
$scope.query = $location.search(); // get the parameters from the url
$scope.search = function (query) { // set the parameters to the url
$location.search(query);
};
và html có dạng
<select ng-model="query.milestone_name" ng-options="ms for ms in params.milestones">
<option value="">-select milestone-</option>
</select>
<select ng-model="property" ng-options="prop.name for prop in params.properties" ng-change="query.property_name=property.name">
<!-- if the object 'property' was passed in the url, it would look like this `%5Bobject%20Object%5D`, so its 'name' parameter is converted to a string -->
<option value="">-select property-</option>
</select>
<span ng-switch="property.type">
<label ng-switch-when="text">{{query.property_name}}: <input type="text" ng-model="query.property_value"></label>
<label ng-switch-when="checkbox">{{query.property_name}}: <input type="checkbox" ng-model="query.property_value"></label>
</span>
<button ng-click="search(query)">search</button>
và một nơi khác trong trang là danh sách kết quả.
người dùng cũng có thể truy cập vào một trang kết quả tìm kiếm với một địa chỉ như thế này:
http://myapp.com/search?milestone_name=a&property_name=name%20A
hầu như tất cả mọi thứ hoạt động tốt: danh sách kết quả được hiển thị, "cột mốc" tham số là lựa chọn trước với giá trị chính xác trong thành phần select
, nhưng không phải là tham số "thuộc tính" vì nó không phải là một chuỗi, nó là một đối tượng.
làm cách nào tôi có thể đặt giá trị mặc định (ng-model) của thành phần được chọn thành đối tượng?
hoặc bất kỳ ý tưởng nào khác về cách tôi nên thực hiện việc này?
Cảm ơn bạn !!! Đây chính là điều tôi cần làm. –
làm việc cho tôi quá. 'track by' đã thực hiện công việc. Nếu bạn muốn lọc danh sách, nó phải được sử dụng ở cuối biểu thức vì [answer] (http://stackoverflow.com/a/21416725/2071612) gợi ý – Lekhnath
tôi đã thử "theo dõi" nhưng tùy chọn các giá trị vẫn trông như thế này "đối tượng: 875" và ng-chọn của tôi không hoạt động –