2012-11-04 18 views
5

के साथ कोणीय-यूआई चयन 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); 
    }; 

} 
+0

शायद आपको एक प्लंकर http://plnkr.co/ सेट करना चाहिए। – maxisam

+0

एक प्लंकर स्थापित करना मेरे लिए मुश्किल है, क्योंकि मुझे नहीं पता कि AJAX का अनुकरण कैसे करें, क्या मैंने यहां अपनी समस्या का बेहतर उल्लेख किया है - https://github.com/ivaynberg/select2/issues/560 –

उत्तर

0

यह अंत में फिक्स्ड: - के रूप में मैं दायरे में विन्यास वस्तु रखा [attrs [ "uiSelect2"]], मैं ऊपर विन्यास वस्तु की .ajax.data विधि हर बार मैं लोड कहा जाता है डेटा।

scope[attrs["uiSelect2"]].ajax.results(product.SalesPart.text, 1); 
संबंधित मुद्दे