Tôi đã tạo ra chỉ đơn giản tùy chỉnh AngularJs cho jquery này Plugin tuyệt vời jQuery-Select2 như sau:Angularjs Tuỳ chỉnh Select2 chỉ
Chỉ
app.directive("select2",function($timeout,$parse){
return {
restrict: 'AC',
link: function(scope, element, attrs) {
$timeout(function() {
$(element).select2();
},200);
}
};
});
Cách sử dụng trong HTML mẫu:
<select class="form-control" select2 name="country"
data-ng-model="client.primary_address.country"
ng-options="c.name as c.name for c in client.countries">
<option value="">Select Country</option>
</select>
Nó hoạt động như mong đợi và bình thường 012 Thành phầnđược thay thế bằng select2
plugin.
Tuy nhiên, có một vấn đề, mặc dù đôi khi nó hiển thị giá trị mặc định tức là Select Country
ở đây mặc dù giá trị mô hình thả xuống thích hợp được tự động chọn.
Bây giờ, nếu tôi tăng khoảng thời gian $timeout
từ 200
lên một số giá trị cao có nghĩa là 1500
, nó đang hoạt động nhưng trì hoãn việc hiển thị chỉ thị. Ngoài ra tôi nghĩ rằng đây không phải là giải pháp thích hợp cho nó, như dữ liệu của tôi là nhận được tải thông qua ajax.
Tôi cũng đã cố gắng để cập nhật chỉ thị như sau, nhưng không may mắn trong đó một trong hai:
app.directive("select2",function($timeout,$parse){
return {
restrict: 'AC',
require: 'ngModel',
link: function(scope, element, attrs) {
var modelAccessor = $parse(attrs.ngModel);
$timeout(function() {
$(element).select2();
});
scope.$watch(modelAccessor, function (val) {
if(val) {
$(element).select2("val",val);
}
});
}
};
});
PS: Tôi biết rằng có cũng tương tự như mô-đun hiện ui-select, nhưng nó đòi hỏi một số đánh dấu khác nhau dưới hình thức <ui-select></ui-select>
và Ứng dụng của tôi đã được phát triển đầy đủ và tôi chỉ muốn thay thế hộp chọn bình thường bằng select2.
Vì vậy, bạn có thể vui lòng hướng dẫn tôi làm cách nào để tôi có thể giải quyết vấn đề này và đảm bảo rằng chỉ thị giữ đồng bộ hóa với hành vi mới nhất?
Điều này có liên quan gì đến 'select2' không? Nếu bạn loại bỏ chỉ thị 'select2', và làm cho nó trở thành một phần tử chọn bình thường, nó có hoạt động như mong đợi không? –
Có nó hoạt động như mong đợi nếu tôi loại bỏ như vậy. –
Tôi cũng đang sử dụng 'select2' trong ứng dụng của mình nhưng tôi đang sử dụng [ui-select2] (https://github.com/angular-ui/ui-select2) là trình bao bọc của Angular cho nó, hiện không được dùng nữa . Select2 đã gây cho tôi rất nhiều đau buồn btw, tôi đề nghị bạn tránh nó nếu bạn có thể :) –