2016-05-18 49 views
1

我在工廠包裝了一個全局變量,以便它可以注入。它看起來是這樣的:AngularJS中的包裝窗口全局變量

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

因爲這個工具是如何工作的,在運行初始化後在未來的某個點,窗口上的變量woopra被新值代替。

我需要注射工廠woopra來引用窗口上的這個新的woopra變量。有什麼好辦法做到這一點?目前我只是將其引用爲$window.woopra,所以我可以模擬$window

回答

0

工廠

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

CTRL 2

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

CTRL 2

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

該樣本顯示enjectableVar每股2之間控制器

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" 
}]);