2014-02-11 37 views
0

我想重寫一個應用程序使用angular.js,但我仍然不知道它是如何工作的(或多或少)。Angularjs - >如何初始化角度風格的變量

例如,在我以前的代碼中,我有一個函數,一旦加載了所有初始化變量,就會在window.variable樣式中爲所有人訪問。

現在我想在這裏。

我的想法是建立一個工廠返回一個包含所有變量的對象,然後讓每個人都可以訪問這個對象(以某種方式)。

問題是: 1-我是對嗎?我應該通過工廠初始化變量? 2-我怎樣才能在代碼的開頭「調用」這個工廠方法?與module.run功能?

乾杯,

回答

1

我可能把變量的服務,然後注入到這一個包裹的角度控制器。你想要訪問這些'全局'變量的任何其他控制器將嵌套在包裝控制器下,從而繼承變量。

var app = angular.module("app", []); 

app.service("globVars", function() { 
    var vars = {}; 
    vars.someVar = "a"; 
    vars.someOtherVar = "b"; 
    return vars; 
}); 

app.controller("WrappingCtrl", function ($scope, globVars) { 
    $scope.globVars = globVars; 
}); 

app.controller("NestedCtrl", function ($scope) { 
    console.log($scope.globVars.someVar); // => "a" 
}); 


<html ng-app="app"> 
    <div id="wrapper" ng-controller="WrappingCtrl"> 
    <div class="nested" ng-controller="NestedCtrl"> 
     {{globVars.someVar}} 
    </div> 
    </div> 
</html> 
+0

是的,這正是我的想法和它的工作原理(儘管使用工廠,而不是服務)。非常感謝! – Gerard

+0

不用擔心,我很高興它爲你工作:) –

+0

包裝控制器不是一個好主意......相反,我寧願只在需要使用變量的地方注入服務......不是每個部分的應用程序必須知道這些變量 – doodeec

1

我想你應該避免使用全局變量,就像你可以

但是,如果你要使用它們,你是對的,你可以在module.run初始化它們,並添加模塊應用程序依賴關係

1

如果您想訪問某些變量,則必須看到$ rootScope,因爲您可以隨處訪問$ rootScope。

此外,您還必須使用角度配置和運行功能。

我給你的建議不使用全球範圍內,因爲它會影響應用程序的速度,內存泄漏等