我在django和angularJs方面相对较新。问题是angularJs没有正确响应get方法。我有一个由django开发的网页,我在那里有一个搜索字段。对于搜索的执行,我使用angularJs的功能,即提交并编写angular Js代码,以使用get方法返回值。也许我在这里犯了一个错误。你可以看到我的代码。。。这是我的模板,其中包含angularJs也。。。
<div class="navbar navbar-default " ng-controller="NavCtrl">
<form action="" class="navbar-form navbar-right" ng-submit="search()">
<input class="form-control col-lg-8" type="text" placeholder="Search" ng-model="term"></input>
</form>
</div>
<script>
app.controller("NavCtrl", ['$scope', '$http', '$location', '$q', '$timeout',
function NavCtrl($scope, $http, $location, $q, $timeout) {
$scope.results = ["Test"];
$scope.term = "";
$scope.reqs = "5";
$scope.pics = "45";
$scope.ddata = "asdasd";
$scope.ddata = $http.post("{% url 'get-nav-info' %}").success(
function (result) {
//$scope.reqs = result.data.data.num_request;
//$scope.pics = result.data.data.num_photo;
return result.data;
}
);
//$scope.reqs = $scope.ddata.num_request;
//$scope.pics = $scope.ddata.num_photo;
$scope.search = function () {
//alert("test");
//$location.absUrl("{% url 'search-term-show' %}").search({'term':$scope.term}).apply();
//$location.path("{% url 'search-term-show' %}").search({'term':$scope.term}).apply();
$http.get("{% url 'search-term-show' %}?term=" + $scope.term).success(function (result) {
return result.data;
});
//$scope.$apply();
}
}
]);
</script>
现在的问题是,当我按下回车键时,没有结果,但如果我手动写入这个的URLhttp://www.kothay.com/searchphoto/?term=a在地址栏中,然后显示结果。另外,这个url就是当我按enter键搜索照片时应该出现在地址栏上的url。但按下回车键后,它不会出现在地址栏中,这就是为什么结果不会显示的原因。我希望你能理解我想说的话。可能是我的代码有错误。请帮我解决这个问题。
你做错了。
第一,成功是得到的延迟,所以返回result.data并将其返回到得到的延迟中,它就在那里进入天堂。因此,如果你想保持当前的架构,它应该看起来更像这个
$scope.search = [];
getsearch = function () {
$http.get("{% url 'search-term-show' %}?term=" + $scope.term).success(function (result) {
$scope.search = result.data;
});
};
getsearch();
第二,如果ctrl函数结束,摘要在您响应之前结束,它仍然不能更新您的UI,因为它在另一个范围(不是$scope,而是编程术语scope)中不会更新您的用户界面。解决这个问题的方法是把你的数据放在一个服务中,然后在你的ctr中就可以了。
function ctrl($scope, myservice){
$scope.data = myservice;
}
ng-repeat="x in data.results"
这是一个完整的教程http://bresleveloper.blogspot.co.il/2013/08/breslevelopers-angularjs-tutorial.html
最后一件事是始终使用.error(…)