我有一个bootstrap typeahead
<input type="text" ng-model="selected" ng-change="invalid_tickr=false" typeahead="tickr for tickr in tickrValues($viewValue)" class="form-control" required autofocus>
controller.js
$scope.tickrValues = function(val) {
var url = // some url
$ajax.get(url).success(function(data, status, headers, config) {
console.log(data);
return data.map(function(item) {
console.log(item);
console.log(item.value);
return item.value;
});
});
}
此函数正确地将item.value打印到控制台,但它没有返回值。
答案 0 :(得分:2)
你错过了使用.get()获取数组。如果您在地图中有一些数组的集合,假设您想要获取集合中的所有数组值,请使用.get()方法
base64_decode
答案 1 :(得分:1)
在Angular中,我建议你在工厂而不是控制器中调用你的ajax,这样你就不需要重新运行角度摘要,也不需要让代码看起来更整洁和可维护。
因此,使用ajax调用的角度工厂将如下所示:
angular.module('myApp.factory',[])
.factory('restCall',['$http',function($http) {
return {
factoryCall: function(url) {
return $http.get(url);
}
}
}]);
angular.module('myApp',[])
.controller('myApp.controller',['restCall','$scope', function(restCall,$scope) {
$scope.tickrValues = function(val) {
restCall.factoryCall(url).then(function(data) {
return data.map(function(item) {
console.log(item);
console.log(item.value);
return item.value;
});
});
}
}]);
答案 2 :(得分:0)
你应该在 $ ajax.get
之前加上return语句这是更新代码。
var url = // some url
return $ajax.get(url).success(function(data, status, headers, config) {
console.log(data);
return data.map(function(item) {
console.log(item);
console.log(item.value);
return item.value;
});
});
}
希望这项工作。