के साथ कोणीय-यूआई चयन 2 के साथ दो तरह से डाटाबेसिंग एंजैक्स कार्यक्षमता के साथ कोणीय जेएस + कोणीय-UI चयन 2 के साथ दो तरह से डाटाबेसिंग।अजाक्स कार्यक्षमता
मैंने जेनेरिक तरीके से सिलेक्ट 2 ड्रॉपडाउन अजाक्स व्यवहार को लागू करने के लिए एक निर्देश बनाया: - (प्रारूप प्रारूप, प्रारूप चयन कॉल करने के लिए कुछ विकल्प और यूआरएल) की आवश्यकता है।
मेरी समस्या यह है कि "संपादन मोड" में मान लोड करने के लिए, ड्रॉपडाउन से चयनित मूल्य स्वरूप चयन विधि में प्राप्त होता है, लेकिन स्क्रीन लोड करते समय, मैं उसी मान से ड्रॉपडाउन लोड करना चाहता हूं जिस पर यह बाध्य है। उदाहरण: -
<input type="hidden" for="part" class="bigdrop" style="width: 250px" formatresult="partFormatResult" formatselection="partFormatSelection" aurl="/api/Part" search-drop-down ui-select2="configPartSelect2" ng-model="product.SalesPart" data-placeholder="Select Part" ng-change="onPartSelect();" />
Directive Code
One23SRCApp.directive('searchDropDown', ['$http', function (http) {
return function (scope, elm, attrs) {
var raw = elm[0];
var fetchFuncName = "fetch" + attrs["uiSelect2"];
console.log("Directive load pat " + scope[attrs["ngModel"]]);
scope[fetchFuncName] = function (queryParams) {
var result = http.get(queryParams.url, queryParams.data).success(queryParams.success);
result.abort = function() {
return null;
};
return result;
};
scope[attrs["uiSelect2"]] = {
minimumInputLength: 3,
initSelection: scope[attrs["initselection"]],
ajax: {
url: attrs["aurl"],
data: function (term, page) {
return { params: { isStockable: true, query: term, pageNo: page, pageSize: 20 } };
},
dataType: 'json',
quietMillis: 100,
transport: scope[fetchFuncName],
results: function (data, page) {
var more = (page * 20) <= data.length; // whether or not there are more results available
return { results: data, more: more };
}
},
formatResult: scope[attrs["formatresult"]],
formatSelection: scope[attrs["formatselection"]],
dropdownCssClass: "bigdrop" // apply css that makes the dropdown taller
};
return { bind: attrs["ngModel"] };
};
}]);
//inside controller-
after loading of data
$("#partDD").select2("val", product.SalesPart);
//$scope.partInitSelection definition.
$scope.partInitSelection = function (element, callback) {
if (! $scope.PartList) {
$scope.PartList = [$scope.product.SalesPart];
} else {
$scope.PartList.push($scope.product.SalesPart);
}
callback($scope.product.SalesPart);
};
}
शायद आपको एक प्लंकर http://plnkr.co/ सेट करना चाहिए। – maxisam
एक प्लंकर स्थापित करना मेरे लिए मुश्किल है, क्योंकि मुझे नहीं पता कि AJAX का अनुकरण कैसे करें, क्या मैंने यहां अपनी समस्या का बेहतर उल्लेख किया है - https://github.com/ivaynberg/select2/issues/560 –