Я пытаюсь добавить angular-typeahead в мое приложение для поискового запроса, беря справку из этого Plunkr.не может получить доступ к данным из службы в контроллере
Это код app.js файла:
var myApp = angular.module('myApp', ['ngRoute','siyfion.sfTypeahead']);
myApp.factory('websitesSvc',function($http, $log, $q) {
return {
getwebsites: function(){
//Create a promise using promise library
var deferred = $q.defer();
$http({method: 'GET', url: '/api/websites/'}).
success(function(data, status, headers,config){
deferred.resolve(data);
}).
error(function(data, status, headers,config){
deferred.reject(status);
});
return deferred.promise;
}
};
});
myApp.controller('MyCtrl', ['$scope','websitesSvc',
function($scope,websitesSvc) {
$scope.searchString=null;
websitesSvc.getwebsites().then(function(websites){
$scope.websites = websites;
console.log($scope.websites); //It works here
});
//Output undefined
//THIS IS NOT WORKING
console.log($scope.websites);
var websites = new Bloodhound({
datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.domain_name); },
queryTokenizer: Bloodhound.tokenizers.whitespace,
//want to pass the websites array list from service to local
local:websites, //THIS IS NOT WORKING
});
// initialize the bloodhound suggestion engine
websites.initialize();
$scope.numbersDataset = {
displayKey: 'domain_name',
source: websites.ttAdapter()
};
// Typeahead options object
$scope.exampleOptions = {
highlight: true
};
}
]);
Дело это я не в состоянии передать значение $scope.websites
в typeahead
.Как сделать получить значение сайтов от услуг так что я могу передать результирующий массив на typeahead
?
После редактирования кода, как предложено красный 6 часов назад Kalhano Toress Pamuditha, я могу получить доступ к data.But теперь я получаю это
Когда я положил 'угловую-typeahead' в этой функции и' console.log ($ scope.websites) 'он печатает массив в console.But я получаю' TypeError: Не удается установить свойство «изюминкой 'undefined' в консоли. –
Можете ли вы посмотреть этот http://plnkr.co/edit/cMvm7Z4REuIP69Uk4Tzz?p=preview и предложить изменения, необходимые в моем коде. Я сделал то же самое, что и в plunkr, но получая ошибку. –
Я сделал то же, что и вы, кроме 'local: $ scope.websites', поскольку' console.log (websites) 'печатался undefined. Но все же его предоставление' TypeError: Невозможно установить свойство 'highlight' undefined' в консоли. Что в этом плохого? –