2014-04-14 2 views
7

मैं इस समस्या को समझने की कोशिश कर रहा हूं लेकिन मुझे कोई भाग्य नहीं है।ngTagsInput का उपयोग कर स्वतः पूर्ण नहीं किया जा सकता है 'फिर' अपरिभाषित

यह वह प्लंकर है जिसे मैंने लिखा है। ध्यान दें कि कोड पूरी तरह से काम करता है जब मैं $ http.get का उपयोग कर tag.json तक पहुंच रहा हूं।

कोणीय निर्देशक कोड:

<tags-input ng-model="tags"> 
    <auto-complete source="loadTags($query)"></auto-complete> 
</tags-input> 
<p>Model: {{tags}}</p> 

कार्य तस्वीर::

app.directive('tag', function($http) { 
    return { 
    restrict: 'E', 
    templateUrl: 'tag.html', 
    link: function (scope, el) { 
     scope.tags = [ 
      { text: 'Tag1' }, 
      { text: 'Tag2' }, 
      { text: 'Tag3' } 
     ]; 

     var test = [{ "text": "Tag9" },{ "text": "Tag10" }]; 

     scope.loadTags = function (query) { 
      return $http.get('tags.json'); 
     } 
    } 
    } 
}); 

'tag.html' के अंदर एचटीएमएल TagExample


महान लेकिन, मैं डॉन ' टी $http.get का उपयोग करना चाहता है क्योंकि मेरे पास पहले से ही एक वस्तु है इसमें इसके अंदर के टैग हैं जिन्हें मैं स्वतः पूर्ण करने के लिए उपयोग करना चाहता हूं। तो मैं इस

कोणीय निर्देशक संहिता की कोशिश की:

app.directive('tag', function($http) { 
    return { 
    restrict: 'E', 
    templateUrl: 'tag.html', 
    link: function (scope, el) { 
     scope.tags = [ 
      { text: 'Tag1' }, 
      { text: 'Tag2' }, 
      { text: 'Tag3' } 
     ]; 

     var test = [{ "text": "Tag9" },{ "text": "Tag10" }]; 
     scope.loadTags = test; 
    } 
    } 
}); 

एचटीएमएल मेरे 'tag.html' के अंदर:

<tags-input ng-model="tags"> 
    <auto-complete ng-model="loadTags"></auto-complete> 
</tags-input> 
<p>Model: {{tags}}</p> 

लेकिन इस सब पर काम नहीं करता। इसके बजाय मैं अपने फेंकना करने के लिए मिलता

TypeError: Cannot read property 'then' of undefined 
    at http://cdnjs.cloudflare.com/ajax/libs/ng-tags-input/2.0.0/ng-tags-input.min.js:1:5044 
    at http://code.angularjs.org/1.2.15/angular.js:13777:28 
    at completeOutstandingRequest (http://code.angularjs.org/1.2.15/angular.js:4236:10) 
    at http://code.angularjs.org/1.2.15/angular.js:4537:7 angular.js:9563 

लिंक: http://plnkr.co/edit/wEqVMf?p=info

+0

क्या आप इसे समझने में सक्षम थे? मुझे भी वही समस्या हो रही है। एपीआई एक सरणी के साथ प्रतिक्रिया दे रहा है लेकिन अपरिभाषित 'तो' –

उत्तर

18

तो loadFunction की जरूरत है परिवर्तित करने की है ताकि यह एक वादा रिटर्न:

app.directive('tag', function($q) { 
    ... 
    link: function(scope) { 
     $scope.loadTags = function() { 
      var deferred = $q.defer(); 
      deferred.resolve([{ text: 'Tag9' },{ text: 'Tag10' }]); 
      return deferred.promise; 
     } 
    } 
} 

कि करने के लिए इसके अलावा, आप की जरूरत है अपने मार्कअप को ठीक करें ताकि यह स्रोत विकल्प का उपयोग कर सके:

<auto-complete source="loadTags()"></auto-complete> 

यह मेरी समस्या को हल करता है

+0

मेरा दिन आदमी बनाया! :) – Lightning3

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