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结果为空。

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 回答