在多个控制器之间共享变量的一种方法是创建服务并将其注入到要使用它的任何控制器中。
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';
。