3

AngularJS チュートリアルの例を見てみましょう

function PhoneListCtrl($scope, $http) {
   $http.get('phones/phones.json').success(function(data) {
      $scope.phones = data;
   });

   $scope.orderProp = 'age';
}

//PhoneListCtrl.$inject = ['$scope', '$http'];

ここで、URL をハードコーディングしたくなく、'phones/phones.json'このコントローラーをホストするページに挿入することを好むとしましょう。Angular JS で同じことを行う正しい方法は何ですか?

4

1 に答える 1

6

これを行うには多くの方法があります...最も簡単な方法は を使用する$windowことです。そのため、$window サービスを注入します。これは基本的に、注入された単なるグローバル $window です。次に、これらのパスを次のようwindow.path = 'whatever.json';に登録できます。問題ありません。

window.path = 'some/path.json';

function PhoneListCtrl($scope, $http, $window) {
   $http.get($window.path).success(function(data) {
      $scope.phones = data;
   });

   $scope.orderProp = 'age';
}

より高度な方法は、アプリに挿入するサービスを含むモジュールを作成することです。この場合、各ページには独自のモジュールがあります。

 //create your module.
 angular.module('configData', [])
   .factory('pathService', function () {
        return {
           path: 'some/path.json'
        };
   });

//then inject it into your app
var app = angular.module('myApp', ['configData']);

app.controller('PhoneListCtrl', function($scope, $http, pathService) {
   $http.get(pathService.path).success(function(data) {
       $scope.phones = data;
   });

   $scope.orderProp = 'age';
});

もちろん、この 2 つの間で何でもできます。テストが簡単でありながら、最も保守しやすいパスを選択することをお勧めします。

于 2012-12-05T14:35:06.990 に答える