1

Angular と RESTful Web サービスを使用して検索機能を構築しようとしています。私はAngularの完全な初心者ですので、ご容赦ください。

イベント処理と Web サービスとの通信が有線で動作しています。問題は、検索クエリの結果を $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>
        </フォーム>
        </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

コントローラーの 2 つのインスタンスを作成しています。<div ng-controller="SearchCtrl">フォームとリストは同じ要素内にある必要があります。<form>独自のものを持ってはいけませんSearchCtrl

ここで修正された問題を参照してください: http://jsfiddle.net/EeUrY/68/

于 2013-07-02T21:40:55.290 に答える