0

私は現在 angularJS を学習しようとしていますが、コントローラー間のデータへのアクセスに問題があります。

最初のコントローラーは、API から通貨のリストを取得し、それを $scope.currencies に割り当てます。編集をクリックすると、別のコントローラーを使用するビューが切り替わるはずです。今、batarang を使用してデバッグすると、$scope.currencies は通貨オブジェクトの配列を表示します。

{
    currencies: [{
        CurrencyCode: HKD
        Description: HONG KONG DOLLAR
        ExchangeRateModifier: * ExchangeRate: 1
        DecimalPlace: 2
    }, {
        CurrencyCode: USD
        Description: US DOLLAR
        ExchangeRateModifier: * ExchangeRate: 7.7
        DecimalPlace: 2
    }]
}

ただし、 を使用するangular.copyと、$scope.copiedcurrencies結果は null になります。

function CurrencyEditCtrl($scope, $injector, $routeParams) {
    $injector.invoke(CurrencyCtrl, this, { $scope: $scope });
    $scope.copiedcurrencies = angular.copy($scope.currencies);
    console.log($scope.copiedcurrencies);
}
4

1 に答える 1

2

コントローラー間でデータを共有するための最も一般的で推奨される方法は、サービスを使用することです。ライブ デモはこちら (app.js を参照)

var app = angular.module('myApp', []);

app.factory('myService', function() {
  var myService = {
    foo: 'bar'
  };
  return myService;
});

app.controller('myCtrl1', function(myService) {
  console.log(myService.foo);
  myService.foo = 'not bar anymore!';
});

app.controller('myCtrl2', function(myService) {
  console.log(myService.foo);
});

注: サービスを作成する方法はいくつかあります。

于 2013-08-30T06:28:14.943 に答える