0

私はAngularと私のコードをうまく再生する方法を見つけるのに苦労しています.Angularは素晴らしいので、それが私の問題に違いないことを知っています. 一部のモデルには静的データしかありませんが、ほとんどのモデルには、残りのサービスから取得した動的データのみ、または静的データと残りのデータの組み合わせのいずれかがあります。私がこことドキュメントで見る例の多くは、小さな静的 json データセットを扱っているだけです。

モデルがロードされて準備が整う前に、ロードして実行しようとするhtmlにAngularスクリプト呼び出しを入れると、私の問題です。その読み込み時間を調整する方法が必要です。

そのため、モデルの js スクリプトがすべて読み込まれていることを確認し、最後に getScript 呼び出しで角度スクリプトを呼び出す方法を考案しようとしました。

また、カスタムフィルターを作成しました。それをモジュールに追加したいと思います。モジュール名を ng-app タグに追加し、getScript を介して角度スクリプトを遅延ロードしようとすると、エラーが発生し、モジュール名が認識されないと表示されます。モジュール名を ng-app から削除してフィルター モジュールを初期化しようとすると、angular.js が遅延ロードされますが、モデルに登録されていないため、フィルター メソッドが無効であると表示されます。

どこかで重要な情報が欠落していると確信しています。Angular は、モデルを読み込んでから、モデルが到着するまでに少し時間がかかることを認識するのに十分なほどスマートでなければなりません。モデルがロードされていないか、モデルを埋めるためのサービス呼び出しがまだ行われていないため、html を実行して最初の ng-controller タグで吠えるだけではありません。

今、次のようにhtmlにタグを付けると:

<html class="no-js" ng-app="yourApp">

angular.js で getScript を呼び出すと、エラーが発生します。

angular.js の読み込みに失敗しました: エラー: モジュールがありません: yourApp

助けてください。提案をありがとう。

4

1 に答える 1

0

私の理解が正しければ、ページの読み込み中ではなく、ajax 呼び出しを介して angularjs を読み込みますか? その場合、手動でブートストラップを実行する必要があります。

で使用している例を次に示しますrequire.jsが、jquery で使用$.getScript()すると同様になります。

require(['angular', 'jquery', 'app/app-config'], function (angular) {
    'use strict';

    angular.element(document).ready(function () {
        angular.bootstrap(document, ['app']);
    });
});

あなたの場合、それは次のようになります:

$.getScript("http://code.angularjs.org/1.0.4/angular.js", function(data, textStatus, jqxhr) {
   angular.bootstrap(document, ['myApp']);
});

コントローラー、ディレクティブなどを含むすべての JavaScript ファイルも読み込まれていることを確認してください。

于 2013-01-30T20:23:04.563 に答える