2016-05-22 7 views
-3

Ich erhalte den Fehler Uncaught SyntaxError: Unexpected token) für Kundendirektive der automatischen Vervollständigung. In der Chrome-Browserkonsole gibt es VM80623:1 Uncaught SyntaxError: Unexpected token). Wenn ich auf VM80623:1 klicken, es void(); in Dateinamen VM80623"Uncaught SyntaxError: Unexpected token)" für benutzerdefiniertes directive erhalten

gibt implementiere ich die folgende Anweisung aus dem folgenden Link, gibt es denselben Fehler: Geben Sie ein beliebiges Zeichen, auto-complete-Box suchen und auswählen, werden Sie das gleiche bekommen Fehler ..

-Link: http://www.jitendrazaa.com/blog/salesforce/ajax-based-autocomplete-typeahead-directive-in-angularjs/

(function() { 
    'use strict'; 
    var app = angular.module('app'); 
    app.directive('Autocomplete', ['Authentication', '$http', function(AuthenticationService, $http){ 
     return { 
      restrict : 'AEC', 
      require: 'ngModel', 
      scope: { 
       modeldisplay:'= modeldisplay' 
      }, 
      templateUrl: 'directives/autocomplete/autocomplete.html', 
      link: function(scope, element, attrs, ctrl){ 
       scope.searchCustomer = function(customerSearch){ 
        var params = { 
        'session_key': Authentication.GetSessionKey(), 
        'q': customerSearch 
        }; 
        if (!customerSearch){ 
        return; 
        } 
        var url = config.url+'/api/search'; 
        return $http.post(url, params).then(function(response){ 
         var data = response.data; 
         if(data.error == 0) { 
          scope.TypeAheadData = data.result; 
          return data.result; 
         } 
         }); 
       } 
       scope.handleSelection = function(item){ 
       ctrl.$setViewValue(item); 
       scope.modeldisplay = item; 
       scope.selected = true; 
       }; 
       scope.isCurrent = function(index) { 
       return scope.current == index; 
       }; 
       scope.setCurrent = function(index) { 
       scope.current = index; 
       }; 
      } 
      }; 
     }]); 
    })(); 
+1

vierte Zeile von unten Syntax zu finden gibt Komma nachläuft, die ein Problem –

+0

Verwenden Sie einen Syntax-Linter, entweder in Ihren IDE oder sogar eine on-line- verursachen werden Probleme.Dies sollte keine Frage auf dieser Website geworden sein, wenn Tools vorhanden sind, um das Problem zu finden – charlietfl

+0

@charlietfl, ich dies nicht aufgrund von Syntaxproblem, haben in http://www.jitendrazaa.com/blog/salesforce/ajax-based-autocomplete -typeahead-directive-in-angularjs /, geben Sie ein beliebiges Zeichen und wählen Sie, erhalten Sie den gleichen Fehler, was ich bekomme .... – Guest

Antwort

0

ich kopieren und Ihren Code in IntelliJ eingefügt; und das Problem scheint diese Linie zu sein:

var url = config.url'/api/search'; 

Sie müssen etwas tun, um die Variable und die Zeichenfolge zu verketten, wahrscheinlich wie folgt aus:

var url = config.url + '/api/search'; 

Es gibt eine Handvoll andere kleinere Syntax Fehler; aber nichts würde ich erwarten, dass der Code nicht läuft.

In diesem Snippet:

scope: { 
    modeldisplay:'= modeldisplay', 
}, 

Das Komma ist nicht erforderlich:

scope: { 
    modeldisplay:'= modeldisplay' 
}, 

Fügen Sie ein Semikolon am Ende der searchCustomer Methode:

scope.searchCustomer = function(customerSearch){ 
    // other code here 
}; 

Und ein Komma nicht benötigt am Ende der Link-Funktion:

  } // remove comma here, 
     }; 
    }]); 
})(); 

Und schließlich IntelliJ auch die sonst Rückkehr in den $ http.post Ergebnisfunktion gekennzeichnet:

    return $http.post(url, params).then(function(response){ 
         var data = response.data; 
         if(data.error == 0) { 
          scope.TypeAheadData = data.result; 
          return data.result; 
         } 
/* not needed because we are at end of method 
         else { 
          return; 
         } */ 
        }); 

Hier ist der vollständige aktualisierte Code:

(function() { 
    'use strict'; 
    var app = angular.module('app'); 
    app.directive('Autocomplete', ['Authentication', '$http', function(AuthenticationService, $http){ 
     return { 
      restrict : 'AEC', 
      require: 'ngModel', 
      scope: { 
       modeldisplay:'= modeldisplay' 
      }, 
      templateUrl: 'directives/autocomplete/autocomplete.html', 
      link: function(scope, element, attrs, ctrl){ 
       scope.searchCustomer = function(customerSearch){ 
        var params = { 
         'session_key': Authentication.GetSessionKey(), 
         'q': customerSearch 
        }; 
        if (!customerSearch){ 
         return; 
        } 
        var url = config.url + '/api/search'; 
        return $http.post(url, params).then(function(response){ 
         var data = response.data; 
         if(data.error == 0) { 
          scope.TypeAheadData = data.result; 
          return data.result; 
         } 
/*      else { 
          return; 
         } */ 
        }); 
       }; 
       scope.handleSelection = function(item){ 
        ctrl.$setViewValue(item); 
        scope.modeldisplay = item; 
        scope.selected = true; 
       }; 
       scope.isCurrent = function(index) { 
        return scope.current == index; 
       }; 
       scope.setCurrent = function(index) { 
        scope.current = index; 
       }; 
      } 
     }; 
    }]); 
})(); 
+0

Ich habe versucht, immer noch den gleichen Fehler ... – Guest

+0

@geeks Sie haben nicht zur Verfügung gestellt genug, um dies als eine testbare Runnable-App zu kodieren. Sie können darüber nachdenken; vielleicht in Form eines Plünders. – JeffryHouser

+0

Ich habe diese Implementierung von http://www.jitendrazaa.com/blog/salesforce/ajax-based-autocomplete-typeahead-directive-in-angularjs/ Dort kommt der gleiche Fehler – Guest

0

Probleme mit den folgenden Zeilen waren :

  1. -umfang: { modeldisplay: '= modeldisp legen‘, // diese zusätzliche, müssen werden entfernt}

  2. var url = config.url '/ api/search' // config.url & '/ api/search' werden müssen, verkettet

Korrekter Code angebracht ist unten:

(function() { 
    'use strict'; 
    var app = angular.module('app'); 
    app.directive('Autocomplete', ['Authentication', '$http', function(AuthenticationService, $http){ 
     return { 
      restrict : 'AEC', 
      require: 'ngModel', 
      scope: { 
       modeldisplay:'= modeldisplay' 
      }, 
      templateUrl: 'directives/autocomplete/autocomplete.html', 
      link: function(scope, element, attrs, ctrl){ 
       scope.searchCustomer = function(customerSearch){ 
        var params = { 
        'session_key': Authentication.GetSessionKey(), 
        'q': customerSearch 
        }; 
        if (!customerSearch){ 
        return; 
        } 
        var url = config.url + '/api/search'; 
        return $http.post(url, params).then(function(response){ 
         var data = response.data; 
         if(data.error == 0) { 
          scope.TypeAheadData = data.result; 
          return data.result; 
         } 
         else { 
          return; 
         } 
         }); 
       } 
       scope.handleSelection = function(item){ 
       ctrl.$setViewValue(item); 
       scope.modeldisplay = item; 
       scope.selected = true; 
       }; 
       scope.isCurrent = function(index) { 
       return scope.current == index; 
       }; 
       scope.setCurrent = function(index) { 
       scope.current = index; 
       }; 
      }, 
      }; 
     }]); 
    })(); 
Verwandte Themen