Sto usando Angular-ui Bootstrap per la mia applicazione. Io uso la direttiva typeahead.uea typeahead angolare - impossibile leggere la proprietà 'length' di undefined
html:
<input type="text" class="pass_code_input" ng-model="SuppPrefix" Typeahead="ddl_item.Text for ddl_item in getData($viewValue)"/>
controller
function AutoCompleteCtrl($scope,$http, AutoCompleteSrv) {
$scope.getData = function (prefix) {
AutoCompleteSrv.GetAutoComplete("Supplier", prefix).then(function (result) {
var results_arr = [];
angular.forEach(result.data, function (item) {
results_arr.push({ "Val": item.Val, "Text": item.Text });
});
return results_arr
});
};
};
servizio:
function AutoCompleteSrv($http) {
var _$http = $http;
self = this;
self.GetAutoComplete = function (DataType, Prefix) {
var promise = _$http({
method: "GET",
url: 'api/AutoComplete',
params: { 'DataType': DataType, 'Prefix': Prefix }
}).success(function (data, status, headers, config) {
}).error(function (data, status, headers, config) {
});
return promise;
};
};
io ricevo i dati server, ma non riesco a visualizzarlo sullo schermo. Quando eseguo debugger in strumenti di Chrome dev, ottengo l'errore successivo:
TypeError: Cannot read property 'length' of undefined
at http://localhost:52145/js/libs/ui-bootstrap-tpls-0.11.0.min.js:13:12650
at m.promise.then.u (http://localhost:52145/js/angular/angular.min.js:97:280)
at m.promise.then.u (http://localhost:52145/js/angular/angular.min.js:97:280)
at http://localhost:52145/js/angular/angular.min.js:98:417
at h.$eval (http://localhost:52145/js/angular/angular.min.js:108:482)
at h.$digest (http://localhost:52145/js/angular/angular.min.js:106:62)
at h.$apply (http://localhost:52145/js/angular/angular.min.js:109:287)
at HTMLInputElement.l (http://localhost:52145/js/angular/angular.min.js:133:191)
at http://localhost:52145/js/angular/angular.min.js:31:32
at q (http://localhost:52145/js/angular/angular.min.js:7:386)
Ho cercato per soluzione in più luoghi, come that, e anche seguito passo per passo le istruzioni nell'interfaccia utente home page di bootstrap. Cosa ho fatto di sbagliato?
Non si stanno restituendo i dati nel metodo corretto, ma lo si aspetta nel controller – harishr
Ho provato che bu non ha aiutato. Inoltre, quando eseguo il debug, vedo i dati nel controller (viene fornito con la promessa). I dati sono anche tornati dal controller ma poi ho ricevuto questo errore. – Lichte
Puoi configurare un plunker, ti darebbe una rapida risoluzione – harishr