2

私はこれで立ち往生しています。

html5 history api を使用している検索ページがあります。

したがって、「html5」を検索すると、URL は「/search/html5」になります。

ここで、アプリケーションでページの更新を処理したいと考えています。「F5」を押すと、テキスト入力に「html5」を入力し、ボタンをクリックして検索方法を開始するアプリケーションを表示したいと思います。

    <form>
        <input type="text" ng-model="searchText" />
        <button class="btn btn-primary" ng-disabled="!searchText" ng-click="search()" >search</button>
    </form>

私は本当にそれを助けていただければ幸いです。

UPD:つまり、手動で(角度のコントローラーの外部で)次のようなことを行う必要があります

$scope.searchText = 'html5';
$scope.search();

しかし、どうすれば $scope にアクセスできるのかわかりません。

4

3 に答える 3

4

それには別の良い解決策があります。

ネイティブで、サードパーティのライブラリを必要としないので気に入っています。

これをhtmlのどこかに追加するだけです(ここでも、サーバーテンプレートにejsを使用しています):

<p ng-init="searchText = '<%= searchText %>'; search();"></p>

この方法はhttps://stackoverflow.com/a/13232922/801426よりも優れています。これは、後者の入力の値を使用しても検索が完了するまで更新されず、ajax 呼び出しであるため時間がかかるためです。

于 2012-11-07T05:39:42.417 に答える
1

http://plnkr.co/edit/VT5ss4

これは、それを行う 1 つの方法です。angularのルーティング機能を使用しています。 $routeParamsこの場合、searchText にアクセスする方法を提供します。

于 2012-11-05T09:10:20.713 に答える
1

そのための解決策を見つけました(サーバーテンプレートにejsを使用しています):

<script type="text/javascript">
    (function( $ )
    {
        "use strict";
        $(document).ready(function (){
            var $scope = angular.element($('#search-text')).scope();
            $scope.searchText = "<%= searchText %>";
            $scope.search();
        });
    }( jQuery ));
</script>

その質問のおかげで - Call Angular JS from legacy code

于 2012-11-05T13:15:15.067 に答える