在我的代码中,我使用angular(material)自动完成,我需要从外部php文件中获取数据。
HTML:
<div ng-controller="search_interest" layout="column">
<md-content class="md-padding" layout="column">
<md-autocomplete
md-selected-item="selectedItem"
md-search-text="searchText"
md-items="item in getInterest1(searchText)"
md-item-text="item.name"
placeholder="Search for a vegetable">
<span md-highlight-text="searchText">{{item.name}} :: {{item.type}}</span>
</md-autocomplete>
</div>
当我返回“手工制作”的JSON时,自动完成效果很好:
//RETURN: results [{"name":"Broccoli","type":"Brassica"}]
$scope.getInterest1 = function() {
var results = [
{
'name': 'Broccoli',
'type': 'Brassica'
}];
console.log('results', JSON.stringify(results));
return results;
};
但是当我使用$ http.get调用相同的JSON时,它不会显示自动完成的结果,也没有任何事情发生。
//RETURN: results [{"name":"Broccoli","type":"Brassica"}]
$scope.getInterest2 = function() {
$http.get("../inc/users/search_interest.php?query=" + $scope.searchText)
.success(function(results) {
//$scope.interest = results;
console.log('results', JSON.stringify(results));
return results.data;
});
};
但我可以在控制台中看到结果是平等的。
在我的php文件(由$ http.get调用)中,我使用json-encode返回JSON:
$row_set = array('name' => 'Broccoli', 'type'=> 'Brassica');
echo json_encode(array($row_set));
也许php json_encode会返回一个糟糕的json形式?
由于
答案 0 :(得分:2)
确定。刚用承诺解决了我的问题。 在控制器中我宣布$ q
function($scope, $http, $q)
{
$scope.searchText = '';
$scope.selectedItem = undefined;
$scope.selectedInterest = [];
var deferred = $q.defer();
在功能中我使用了$ q:
$scope.getInterest2 = function() {
$http.get("../inc/users/search_interest.php?query=" + $scope.searchText)
.success(function(results) {
//$scope.interest = results;
console.log('results', JSON.stringify(results));
alert(results.name);
deferred.resolve(results);
});
return deferred.promise;
};
谢谢!