在AngularJS中包装窗口全局变量

时间:2016-05-18 00:00:44

标签: javascript angularjs woopra

我在工厂中包装一个全局变量,以便它可以注入。它看起来像这样:

angular.module('Analytics').factory('woopra', [
    '$window',
    function ($window) {
        return $window.woopra;
    }
]);

由于此工具的工作原理,在运行初始化后的某个时间点,窗口上的变量woopra将替换为新值。

我需要注射工厂woopra来引用窗口上的这个新的woopra变量。这样做的好方法是什么?目前我只是将其引用为$window.woopra,因此我可以模仿$window

2 个答案:

答案 0 :(得分:0)

工厂

angular.module('Analytics').factory('woopra', [function () {
  return {
    'injectableVar': 'test Value'
  }
}]);

CTRL2

angular.module('Analytics').controller('Ctrl1', ['$scope', 'woopra', function ($scope, woopra) {
  woopra.injectableVar = 'Value from Ctrl1';
}]);

CTRL2

angular.module('Analytics').controller('Ctrl2', ['$scope', 'woopra', function ($scope, woopra) {
  $scope.Ctrl2Var = woopra.injectableVar;
}]);

此示例显示2控制器之间的enjectableVar共享

答案 1 :(得分:0)

为什么要使用工厂?这么多打字,我使用角度值和常量属性。如果您不希望它可编辑,请使用常量。然后将它注入您想要的控制器:

app.constant("woopra", "test 1234");

// OR the value property, can also be an array

app.value("proptypes", [
{
    Description: "Duplex"
}, {
    Description: "Simplex"
}, {
    Description: "Duet"
}, {
    Description: "Cluster"
}, {
    Description: "House"
}, {
    Description: "Townhouse"
}]);