2013-04-19 9 views
84

मैं कोणीय यूई-बूटस्ट्रैप टाइपहेड का उपयोग कर रहा हूं और मैं इसे कई विकल्पों को चुनने के तरीके के रूप में उपयोग करना चाहता हूं, इसलिए जब चयन करें मैच विधि लॉन्च की जाती है तो मुझे चयनित मान प्राप्त करने की आवश्यकता होगी लेकिन मुझे नहीं पता ऐसा करने के लिए है कि मेरे नियंत्रकचुनिंदा मैच पर कोणीय यूई-बूटस्ट्रैप टाइपहेड कॉलबैक?

<div class='container-fluid' ng-controller="TypeaheadCtrl"> 
<pre>Model: {{selected| json}}</pre> 
<input type="text" ng-model="selected" typeahead="state for state in states | filter:$viewValue"> 

में अगर मैं चयनित मान देखने के लिए, मैं परिवर्तन हर बार एक कुंजी दबाने ...

scope.$watch('selected', function(newValue, oldValue) {... }); 

मुझे मिल गया है कि विधि selectMatch वह उपयोगकर्ता है जिसे उपयोगकर्ता दबाए जाने पर बुलाया जाता है या सूची पर क्लिक करें लेकिन मुझे नहीं पता कि उस पर कॉलबैक कैसे है ...

धन्यवाद!

उत्तर

230

अब ऐसा करने का बेहतर तरीका है। A new callback method has been added

नियंत्रक फ़ाइल में निम्नलिखित जोड़ें:

$scope.onSelect = function ($item, $model, $label) { 
    $scope.$item = $item; 
    $scope.$model = $model; 
    $scope.$label = $label; 
}; 

ध्यान में रखते हुए निम्नलिखित जोड़ें:

<input type="text" 
     ng-model="selected" 
     typeahead="state for state in states | filter:$viewValue" 
     typeahead-editable="false" 
     typeahead-on-select="onSelect($item, $model, $label)"/> 

अधिक जानकारी (onSelect के लिए खोज) के लिए typeahead spec देखें।

चेक आउट करता है, तो निम्न URL में मदद करता है http://www.techguides.in/how-to-create-autocomplete-using-angularjs-ui/

http://www.techguides.in/how-to-customize-autocomplete-to-display-multiple-columns-using-angularjs-ui-2/

+2

धन्यवाद में बीत चुके हैं मिल जाएगा के बाद! एक जादू की तरह काम किया। इसे आधिकारिक तौर पर टाइपहेड शीर्षक के तहत संदर्भ पृष्ठ पर दस्तावेज किया जाना चाहिए: http: //angular-ui.github।आईओ/बूटस्ट्रैप/ – ariestav

+25

क्या किसी को पता है कि $ item $ model $ लेबल ऑब्जेक्ट वास्तव में उस कॉलबैक टाइपहेड-ऑन-सिलेक्ट = 'चयन ($ आइटम, $ मॉडल, $ लेबल)' में हैं? – AardVark71

+0

@ मैट, वैसे भी हम ऑनस्टेक्ट इवेंट के साथ $ http का उपयोग करने में पोस्टबैक कर सकते हैं? –

9

संपादित करें: यह विधि अब सबसे अच्छा नहीं है। इस पर दिए गए उत्तर में समझाए गए कॉलबैक को चुनने के लिए बेहतर है।

मुझे पता चला कि मैं क्या चाहता था। मैंने देखा कि एक टाइपहेड-संपादन योग्य विशेषता है और यदि यह गलत पर सेट है तो चयनित मान केवल तभी बदलता है जब मॉडल से कोई मान चुना जाता है। और इसलिए $ घड़ी एक नया मूल्य चुना जाने पर जांचने के लिए ठीक काम कर रहा है।

<input type="text" ng-model="selected" typeahead="state for state in states | filter:$viewValue" typeahead-editable="false"> 

link: function(scope, elm, attrs){ 
    scope.$watch('selected', function(newValue, oldValue) { 
     if (newValue) 
      console.log(oldValue+"->"+newValue); 
    }); 
} 
0

अपने HTML होना चाहिए के बाद

modelCtrl.$setValidity('editable', true); 
2

सत्यापन करने से पहले निम्न कोशिश

<input id="title" type="text" ng-model="title" typeahead="data.enquiry_title for data in titleData | filter:$viewValue | limitTo:8" 
typeahead-on-select='onSelect($item, $model, $label)' /> 

कॉलबैक फ़ंक्शन के साथ इनपुट टैग में टाइपहेड-ऑन-सिलेक्ट जोड़ें।

नियंत्रक

$scope.onSelect = function ($item, $model, $label) { 
      console.log($item); 
      if($item.tid) 
       $scope.activeTitleId = $item.tid 
     }; 
$ आइटम अंदर

अंदर जाना होगा आप पूरी वस्तु जो आप सुझाव सूची के मुख्य सरणी

संबंधित मुद्दे