Tôi gặp sự cố khi cài đặt mục đã chọn trong chỉ thị chọn góc. Tôi không biết đây có phải là lỗi hay thiết kế có ý thức từ các nhà thiết kế góc cạnh hay không. Nó chắc chắn làm cho các chỉ thị chọn rất ít hữu ích mặc dù.Đặt mục đã chọn trong angularJS chọn chỉ thị
Mô tả:
Ứng dụng của tôi giao tiếp với API REST để nhận thực thể từ cơ sở dữ liệu. API chỉ ra rằng quan hệ của đối tượng được gửi với thuộc tính ID chỉ để bạn có thể truy xuất chúng trong các yêu cầu tiếp theo nếu cần.
Ví dụ:
{ id : 1, customerName : "some name", city : {id : 12}}
nơi thành phố là một thực thể có thể được lấy ra thông qua một thiết bị đầu cuối REST của khác nhau bằng cách sử dụng id thành phố và trông giống như vậy:
{ id: 12, name : "New York"}
tôi cần phải tạo ra một hình thức để chỉnh sửa thực thể khách hàng bằng menu thả xuống với tất cả các thành phố có thể để người dùng có thể chọn thành phố thích hợp từ danh sách. Danh sách ban đầu phải hiển thị thành phố của khách hàng khi được truy xuất từ đối tượng JSON.
Các hình thức trông như thế này:
<form>
<input type="text" ng-model="customer.name"/>
<select ng-model="customer.city" ng-options="i as i.name for i in cities"></select>
</form>
Và bộ điều khiển trông như thế này:
app.controller('MainCtrl', function ($scope, $http) {
$http.get(serviceurl + 'admin/rest/customer/' + id + "/", {
params: {"accept": "json"},
withCredentials: true
}).then(function (response) {
$scope.customer = response.data.item;
});
$http.get(serviceurl + 'admin/rest/city/', {
params: {"accept": "json"},
withCredentials: true
}).then(function (response) {
$scope.cities = response.data.items;
// THIS LINE LOADS THE ACTUAL DATA FROM JSON
$scope.customer.city = $scope.findCity($scope.customer.city);
});
$scope.findCity = function (city) {
for (var i = 0; i < $scope.cities.length; i++) {
if ($scope.cities[i].id == city.id) {
return $scope.cities[i];
}
}
}
});
gì nên xảy ra: một lần đầy đủ các chi tiết của đối tượng thành phố được nạp chỉ thị chọn phải đặt thành phố đã được tải dưới dạng mục đã chọn trong danh sách.
Điều gì xảy ra: danh sách hiển thị một mục trống và không có cách nào để khởi tạo mục đã chọn nếu mục đã chọn từ các đối tượng bên ngoài mảng mục.
DEMO của vấn đề ở đây: http://plnkr.co/edit/NavukDb34mjjnQOP4HE9?p=preview
Có một giải pháp cho việc này? Mục được chọn có được đặt theo chương trình theo cách chung chung sao cho các cuộc gọi AJAX và logic được chọn được cấu trúc lại thành một widget chọn dựa trên AJAX có thể tái sử dụng được không?
Thực tế tôi tìm thấy thành phố chính xác: $ scope.customer.city = $ scope.findCity ($ scope.customer.city); Bất kỳ ý tưởng nào về lý do mã của bạn hoạt động, nơi tôi bị lỗi? – javito
Nó có thể là một điều kiện chủng tộc mà cuộc gọi ajax thứ hai của bạn ('admin/rest/city /') được hoàn thành trước khi đầu tiên (''admin/rest/customer /' + id') không? – Martin
Tôi đã sử dụng cách tiếp cận với id và vấn đề của tôi liên quan đến việc gửi một chuỗi thay vì một số nguyên – Juan