在多个控制器之间共享变量的一种方法是创建服务并将其注入到要使用它的任何控制器中。
简单服务示例:
angular.module('myApp', []) .service('sharedProperties', function () { var property = 'First'; return { getProperty: function () { return property; }, setProperty: function(value) { property = value; } }; });在控制器中使用服务:
function Ctrl2($scope, sharedProperties) { $scope.prop2 = "Second"; $scope.both = sharedProperties.getProperty() + $scope.prop2;}我发现,如果要跨多个控制器绑定到这些属性,则如果绑定到对象的属性而不是原始类型(布尔,字符串,数字)来保留绑定的引用,则效果更好。
示例:
var property = { Property1: 'First' };代替var property = 'First';。
更新: 为了(希望)使事情变得更清楚,here is a fiddle ,其中显示了以下示例:
- 绑定到共享值的静态副本(在myController1中)
- 绑定到原语(字符串)
- 绑定到对象的属性(保存到范围变量)
- 绑定到在更新值时更新UI的共享值(在myController2中)
- 绑定到返回原语(字符串)的函数
- 绑定到对象的属性
- 双向绑定到对象的属性



