2015-04-18 21 views
10

Angular.js uygulamasında yeniyim ve Döngü için bir AngularJs içinde dinamik kapsam değişkenleri oluşturmaya çalışıyorum.AngularJs iç döngüsünde dinamik kapsam değişkenleri oluşturun

$scope.lists=[{listName:'list1'},{listName:'list2'}]; 

for(var i=0;i<$scope.lists.length;i++){ 
    var listName = $scope.lists[i].listName; 
    listName = $parse(listName); 
    listName.assign($scope,[]); 
    $scope.$apply(); 
} 

Yukarıdaki kod belirten bir hata atar: $digest zaten sürmekte Bu aşağıda bir şeydir. Ben sonuçta $scope.list1=[] arayan ve $scope.list2=[] 2 ayrı diziler am Setting dynamic scope variables in AngularJs - scope.<some_string>

: yapıldığı gibi biri için sadece döngü olmadan kullanıldığında

kod Tamam çalışır.

Herhangi bir müşteri adayı harika olurdu. Teşekkürler.

$scope.lists = [{listName: 'list1'}, {listName: 'list2'}]; 

for (var i = 0; i < $scope.lists.length; i++) { 
    var listName = $scope.lists[i].listName; 
    $scope[listName] = []; 
} 

cevap

12

The above code throws an error saying: $digest already in progress.

Zaten konum:

+0

Görünümlerdeki dizilere nasıl erişmeliyim? – Sagar

2

Sadece değişken adıyla ($scope şey ama sadece bir obje olduğu için) nesne özelliğine erişmek için bracket notation kullanın burada $parse ve assign gerekmez denetleyici ve açısal kapsamda. Yani, $scope.$apply() kullanarak digest döngüsünü tetiklemeye gerek yoktur. $$phase'u kontrol etmeli ve uygulamalısınız.

if (!$scope.$$phase) $scope.$apply() 

Ama senaryo için

, ben Allah göstermesin sonrası http tanımlanan metodoloji için gidiyor gibi görünüyor, çünkü aradığını sanmıyorum tüm

$scope.lists = [{listName: 'list1'}, {listName: 'list2'}]; 

angular.forEach($scope.lists, function(item) { 
    var listName = item.listName; 
    $scope[listName] = []; 
}); 
+1

gerekli değil: // stackoverflow.com/questions/18875486/setting-dynamic-scope-variables-in-angularjs-scope-some-string – m0meni

+0

Aslında bunu açısal bir dragdrop ile kullanıyorum ve söyleyerek ne diyeceğini söyleyerek bir TypeError diyerek hata atıyor: 'Özellik ayarlanamıyor' undefined jqyoui_pos 'sonuçta $ scope.list ifadesi tanımlanmamıştır. –

+0

@ AR7 Bu tam olarak aradığı gibi görünüyor. Buradaki sonuç, 2 ayrı dizi olarak kapsamı $ scope.list1 = [] ve $ scope.list2 = [] olacaktır. Bağlantılı yaklaşım, nokta gösteriminin dikkate alındığı uygulamalar için olacaktır. – KreepN

İlgili konular