$http在AngularJS中获得快捷方式搞砸程序?



在下面的脚本中,我发布了我的代码的简化版本。它本质上是一个简化的搜索引擎。

该脚本循环遍历 $scope.list_of_fruit 数组,并根据在简单的 html 输入文本框中键入的内容对其进行筛选。

<script>  
var app = angular.module("myapp",[]);  
app.controller("usercontroller", function($scope){  
$http
.get("test.php")
.then(function (response) {
$scope.myData = response.data.records;
});
$scope.list_of_fruit = ["apple", "banana", "pear", "kiwi"];
$scope.complete = function(boxtext){  
var output = [];  
angular.forEach($scope.list_of_fruit, function(fruit){  
if(fruit.toLowerCase().indexOf(boxtext.toLowerCase()) == 0)  
{  
output.push(fruit);  
}  
});  
$scope.filteredfruit = output;  
}  
});  
</script>  

这工作正常且花花公子,但是当我将该 http get 请求粘贴到顶部时,这与该 $scope.complete 循环完全无关,$scope.complete 循环就会停止工作。

我错过了一些明显的东西吗?

app.controller("usercontroller", function($scope){  

您没有定义$http,因此您可能会收到javascript错误。

向函数参数添加$http:

app.controller("usercontroller", function($scope, $http){ 

我创建了一个代码段,现在似乎有效

var app = angular.module('myApp', []);
app.controller("usercontroller", function($scope, $http){  
$http
.get("https://jsonplaceholder.typicode.com/posts")
.then(function (response) {
$scope.myData = response.data.records;
});
$scope.list_of_fruit = ["apple", "banana", "pear", "kiwi"];
$scope.complete = function(boxtext){  
console.log(boxtext);
var output = [];  
angular.forEach($scope.list_of_fruit, function(fruit){  
if(fruit.toLowerCase().indexOf(boxtext.toLowerCase()) == 0)  
{  
output.push(fruit);  
}  
});  
$scope.filteredfruit = output;  
}  
});
<!DOCTYPE html>
<html ng-app='myApp'>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<script src="https://rawgit.com/angular/bower-angular/master/angular.min.js"></script>

<div ng-controller="usercontroller as vm">
{{list_of_fruit}}
{{filteredfruit}}

<input type="text" ng-model="search"/>
<button ng-click="complete(search)">Do something</button>

</div>
</body>
</html>

相关内容

最新更新