angularjs没有响应GET方法

时间:2013-11-26 05:15:52

标签: django angularjs

我在django和angualarJs中比较新。问题是angularJs没有正确响应get方法。我有一个由django开发的网页,我有一个搜索字段。为了执行搜索,我使用angularJs功能是ng-submit并写入angularJs代码以使用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>

现在的问题是,当我按回车键时,没有结果,但如果我在地址栏中手动编写 http://www.kothay.com/searchphoto/?term=a 这个网址,则会显示结果。提一下,这个网址是当我按回车键搜索我的照片时应该出现在地址栏中的网址。但是输入按下它没有出现在地址栏中,这就是结果没有显示的原因。我希望你可以理解我想说的。可能是我的代码中有错误。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

你做错了。

第一,成功是延迟get,所以返回result.data并将其返回到get deferred并在那里进入天堂。因此,如果您想保留当前的架构,它应该看起来更像是

$scope.search = [];
getsearch = function () {
                $http.get("{% url 'search-term-show' %}?term=" + $scope.term).success(function (result) {
                    $scope.search = result.data;
                });
            };
getsearch();

第二个仍然无法更新您的UI因为如果ctrl功能结束并且摘要在您的响应之前结束它不会更新您的UI因为它在另一个范围(不是$ 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(...)