मैं Bootstrap-Select
प्यार है और मैं अभी किसी अन्य उपयोगकर्ता joaoneto/angular-bootstrap-select
द्वारा किए गए एक निर्देश की मदद के माध्यम से उपयोग कर रहा हूँ और यह के रूप में जब मैं एक $http
या में साथ मेरे <select>
तत्व को भरने के लिए कोशिश को छोड़कर अपेक्षित तरीके से काम मेरा मामला dataService
रैपर। मुझे कुछ समय मुद्दा मिल रहा है, डेटा selectpicker
के बाद प्रदर्शित/ताज़ा हो गया है और फिर मैं एक खाली बूटस्ट्रैप-चयन सूची प्राप्त कर रहा हूं .. हालांकि फायरबग के साथ, अब मैं छिपे हुए <select>
में मूल्यों की सूची देखता हूं। यदि मैं फिर कंसोल में जाता हूं और $('.selectpicker').selectpicker('refresh')
मैन्युअल रूप से निष्पादित करता हूं तो यह काम करता है।
मुझे यह एक पैच करके अस्थायी रूप से काम कर रहा है और को $timeout
के अंदर जोड़ रहा है लेकिन जैसा कि आप जानते हैं कि यह आदर्श नहीं है क्योंकि हम jQuery
का उपयोग सीधे एनजी कंट्रोलर में कर रहे हैं ... आउच!
तो मेरा मानना है कि निर्देश संभवतः एक वॉचर या कम से कम कुछ ट्रिगर करने के लिए कुछ है जो ngModel
बदल गया है या अपडेट हो गया है।
एचटीएमएल नमूना कोड:कोणीय बूटस्ट्रैप-चयन समय मुद्दा ताज़ा करने के लिए
<div class="col-sm-5">
<select name="language" class="form-control show-tick"
ng-model="vm.profile.language"
selectpicker data-live-search="true"
ng-options="language.value as language.name for language in vm.languages">
</select>
<!-- also tried with an ng-repeat, which has the same effect -->
</div>
फिर मेरे कोणीय नियंत्रक के अंदर:
// get list of languages from DB
dataService
.getLanguages()
.then(function(data) {
vm.languages = data;
// need a timeout patch to properly refresh the Bootstrap-Select selectpicker
// not so good to use this inside an ngController but it's the only working way I have found
$timeout(function() {
$('.selectpicker, select[selectpicker]').selectpicker('refresh');
}, 1);
});
और यहाँ पर कोणीय साथ GitHub for Angular-Bootstrap-Select
function selectpickerDirective($parse, $timeout) {
return {
restrict: 'A',
priority: 1000,
link: function (scope, element, attrs) {
function refresh(newVal) {
scope.$applyAsync(function() {
if (attrs.ngOptions && /track by/.test(attrs.ngOptions)) element.val(newVal);
element.selectpicker('refresh');
});
}
attrs.$observe('spTheme', function (val) {
$timeout(function() {
element.data('selectpicker').$button.removeClass(function (i, c) {
return (c.match(/(^|\s)?btn-\S+/g) || []).join(' ');
});
element.selectpicker('setStyle', val);
});
});
$timeout(function() {
element.selectpicker($parse(attrs.selectpicker)());
element.selectpicker('refresh');
});
if (attrs.ngModel) {
scope.$watch(attrs.ngModel, refresh, true);
}
if (attrs.ngDisabled) {
scope.$watch(attrs.ngDisabled, refresh, true);
}
scope.$on('$destroy', function() {
$timeout(function() {
element.selectpicker('destroy');
});
});
}
};
}
कोणीय जेएस संस्करण? – tasseKATT
AngularJS का संस्करण 1.3.11 – ghiscoding