我目前正在尝试学习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);
}
答案 0 :(得分:2)
在控制器之间共享数据的最常见和推荐的方法是使用服务。 Click here for Live Demo (see 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);
});
注意:有几种创建服务的方法。