2017-05-02 67 views
0

我在創建作用域變量時有疑問。哪個是創建和使用範圍變量的最佳方式以及原因。在angularjs中創建作用域變量

$scope.name1 = ""; 
$scope.name2 = ""; 
$scope.name3 = ""; 

$scope.name = {name1: "", name2: "", name3: ""}; 

我與內存和性能相比答案。

+3

我可以向你保證,這不會成爲你的應用程序的性能瓶頸。不要過早優化 - 從代碼可讀性的角度來看,選擇哪一個更合理。 –

+0

你能解釋一下這兩種方法的內存分配方式嗎? – Rishi

+0

取決於正在使用的JS虛擬機。我可以想象第二個例子可能會使用一個很小的(我的意思是微小的)更多的內存,看到對象層次結構中有一個額外的級別,但我不知道。但是再次 - 它*真的*並不重要 - 這麼小的東西不會在應用程序中的性能上產生明顯的差異,所以花時間煩惱的是哪一個更加節省內存僅僅是浪費你的時間和能源。 –

回答

0

這兩種方式都不會對您的應用程序有任何性能問題。這取決於你需要根據你的需要來實施。

雖然它始終是更好地使用對象時要綁定的數據,其總申報和對象,並分配屬性

$scope.names = {name1: "", name2: "", name3: ""}; 
+0

,您是否可以解釋如何在兩種方法中分配內存。 – Rishi

0

我建議你一個不同的計算策略...嘗試ControllerAS語法。 。所以像:

HTML:

<div data-ng-controller="MyController as my"> my.names.name1 </div> 

JS:

app.controller("MyController",["$scope",function($scope){ 

    var vm = this; 

// so you use THIS (wrapped in vm var) instead of $scope... better perfomance 
    vm.names={name1:"",name2:""}; 


}]); 
+0

你打敗了我。 – cst1992

+0

: - )....對不起......當你回答時,我正在扭傷 –

0

都不是,使用一個控制器變量,而不是:

var vm = this; 
vm.name = {...}; 

這將讓您的數據和$scope分開。

0

這取決於你正在努力實現的目標,但如果你在你的應用程序需要迭代names,考慮使用數組:

$scope.names = ['Rob', 'Ned', 'Jon']; 

它,它不是表演,但你會能夠在陣列上使用ngRepeat

相關問題