将$ window变量链接到$ scope并在更改时更新它

时间:2014-11-24 23:00:29

标签: angularjs

我有一个控制器:

myApp.controller('vistaPreviaCtrl', ['$scope', '$window', 
    function ($scope, $window) {
        angular.element(document).ready(function (){
            $scope.my_var = $window.my_var; //once
        })
}]);

我希望$ window.my_var中的每个更改都在$ scope.my_var中更改。有办法吗?

1 个答案:

答案 0 :(得分:1)

如果$window.my_var是对象或数组:

myApp.controller('vistaPreviaCtrl', ['$scope', '$window', function ($scope, $window) {
    $scope.my_var = $window.my_var;
}]);

$scope.my_var将指向$window.my_var引用的同一对象,因此它们本身已经“链接”。

如果$window.my_var是基元(例如数字,字符串),则需要使用监视来更新本地$ scope的值。:

myApp.controller('vistaPreviaCtrl', ['$scope', '$window', function ($scope, $window) {
    $scope.$watch('$window.my_var', function (newVal) {
        $scope.my_var = newVal;
    });
}]);

我还建议您详细了解JavaScript中的参考和值:https://stackoverflow.com/a/6605700/2943490