1. ホーム
  2. javascript

[解決済み】AngularJSのエラー。解決済み] Unityでゲームオブジェクトの子オブジェクトをループで破壊するには?

2022-02-21 02:16:32

質問

現在、AngularJSのチュートリアルに沿って勉強しています。これは、私のcontrollers.jsファイル内のコードです。

'use strict';

angular.module ( 'F1FeederApp.controllers' , []                                     )
.controller    ( 'driversController'       , function ( $scope , ergastAPIservice ) {

    $scope.nameFilter = null;
    $scope.driversList = [];

    ergastAPIservice.getDrivers ().success ( function ( response ) {
        $scope.driversList = response.MRData.StandingsTable.StandingsLists [ 0 ].DriverStandings;
    });
});

以下のようなエラーが発生します。

1) $sceDelegate ポリシーで許可されていない url からのリソースの読み込みをブロックしました。

2) TypeError: ergastAPIservice.getDrivers(...).success is not a function.

私はAngularの初心者なので、これらのエラーの原因が何であるかは特にわかりません。私が見た中で、他の例と違うのは、このブロックのコードだけです。( services.js )

'use strict';

angular.module ( 'F1FeederApp.services' , []                 )
.factory       ( 'ergastAPIservice'     , function ( $http ) {

    var ergastAPI = {};

    ergastAPI.getDrivers = function () {
        return $http ({
            method : 'JSONP' ,
            url    : 'http://ergast.com/api/f1/2013/driverStandings.json?callback=JSON_CALLBACK'
        });
    };

    return ergastAPI;
});

私の場合は、getDrivers関数の最後にセミコロンがあることと、getDrivers関数の最後に use strict という文をファイルの先頭にもってきます。しかし、gruntはこの2つの行がないとアプリケーションの実行を拒否するので、それが問題であるとは思えません。

もし、どなたか正しい方向を示してくださる方がいらっしゃれば、とてもありがたいです。

どのように解決するのですか?

問題点その1 :

その url あなたのアプリからリクエストしようとしているものは安全ではありません。 によると、AngularJSの sceDelegatePolicy . この問題を解決するには を使用して、アプリ内のURLをホワイトリストに登録します。 resourceUrlWhitelist メソッド で $sceDelegateProvider を以下に示します。

angular.module('myApp', []).config(function($sceDelegateProvider) {  
$sceDelegateProvider.resourceUrlWhitelist([
    // Allow same origin resource loads.
    'self',
    // Allow loading from our assets domain. **.
    'http://ergast.com/**'
  ]);

わかりやすい説明のために、上記の例は こちら

課題その2。

エラーが発生する問題 TypeError: ergastAPIservice.getDrivers(...).success is not a function は、使用しているAngularJSのバージョンに起因している可能性があります。レガシーな .success/.error メソッドは、最新のAngularJsバージョン1.6で非推奨となりました。 . 以下は 非推奨のお知らせ 最新のAngularJsを使用している場合は、それが原因である可能性があります。そうでない場合は、問題をデバッグするためにもっと情報が必要です。