1

我正在尝试使用 Angular 和 RESTful Web 服务构建搜索功能。我是 Angular 的新手,所以请耐心等待。

我有事件处理和与网络服务的通信连接和工作。问题是当我将搜索查询的结果分配给 $http 成功回调中的 $scope 时,我的视图永远不会更新。

但是,我确实在回调中取回了数据$http,如果我尝试使用静态数据在此回调中更新我的模型,这也不会出现。

无论我将结果记录推向错误$scope还是发生了什么,我都完全不知所措。$scope.$apply()不起作用,因为模型更新已在进行中。我也尝试了不同版本的 Angular,但无济于事。使用 $resource 而不是$http解决问题。

有人有想法吗?提前致谢

我还在控制器中设置了一个带有更多诊断功能的JSFiddle

我的 HTML:

    <div ng-app="myApp">
        <div ng-controller="SearchCtrl">
            <div ng-repeat="result in results" class="result">
                <div class="板">
                    <div class="name">{{result.board}}</div>
                    <div class="posts">{{result.posts}}</div>
                    <div class="clear"></div>
                </div>
                <div class="clear"></div>
            </div>
        </div>
        <div>
        <form ng-submit="doSearch()" ng-controller="SearchCtrl" name="search" id="search">
            <input type="text" value="" ng-model="searchTerm" name="q" id="searchterm"></input>
            <button class="search" id="searchbtn" type="submit">搜索</button>
        </form>
        </div>
    </div>
    

我的控制器:

myApp.controller('SearchCtrl', function ($scope, $http) {
    $scope.results = [];
    $scope.doSearch = function () {
        data = 'json=' + encodeURIComponent(angular.toJson([{
            board: "one", posts: 435
        }, {
            board: "two", posts: 123
        }]));
        $http.post('/echo/json/', data, {
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
            }
        }).success(function (data) {
            for (var i in data) {
               $scope.results.push(data[i]);
            }
        });
    };
})
4

1 回答 1

3

您正在创建控制器的两个实例。表单和列表必须在同一个<div ng-controller="SearchCtrl">元素内。<form>不应该有自己的SearchCtrl

请参阅此处修复的问题:http: //jsfiddle.net/EeUrY/68/

于 2013-07-02T21:40:55.290 回答