2016-03-25 14 views
0

Temel öneri, bir değişkene derledikten ve kopyaladıktan sonra öğenin değer özniteliğine erişmeye çalışıyorum. Örneğin: eğer vm.datasource.data ['+ i +']. TatilName "Noel" olarak derlenmişse, bu değeri alıp bir değişkende saklamak istiyorum.Bir açısal öğeden derlenmiş nodeValue nasıl alınır

Derlenmiş değeri bir değişkene kopyalamak mümkün mü? emekçi saat çözümün yazdıktan sonra 5 dakika ...

basitçe kapsamını eklemek bulduktan sonra

var link = function(scope, elem, attrs){ 

     setTimeout(function(){ 
     var checkboxCellArray = elem.find('.md-checkbox-cell'); 

     _.forOwn(checkboxCellArray, function(node, i) { 
      if(angular.element(node).hasClass('md-checkbox-cell')){ 
      var element = angular.element('<p value="{{vm.selected.length}} checked. {{vm.headers[0].orderBy}}. {{vm.datasource.data['+ i +'].HolidayName}}. {{vm.headers[1].orderBy}}. {{vm.datasource.data['+ i +'].Country}}"></p>') 
      var compiled = $compile(element)(scope); 

      setTimeout(function(){ 
       console.log(compiled); 
      }, 500) 
      } 
     }); 
     }, 1000) 
    } 

cevap

0

derleme sonra() $ geçerlidir. görünüyor ve değişken güncellenmiş değerlere sahip olacaktır.

+0

daha iyi bir yaklaşım için, cevap aşağıda bakıyor mu –

0

Gerçek sorun, setTimeout işlevini kullanıyor ve ondan açısal öğelerini güncelliyordunuz. Dış açısal dünyanın açısal kapsamını modifiye eden setTimeout asenkron olayı, sindirim döngüsünü çalıştırmak için açısal sindirim sistemine iç açmaz. HTML sayfası üzerinden ciltlemeyi güncellemek için manuel olarak başlatmanız gerekir. Bu sorun, setTimeout & içinde işlevinizi çalıştırmak $timeout kullanarak kullanarak kolayca düzeltmek olabilir, daha sonra sindirme döngüsü çalışır.

Kod

$timeout(function(){ 
    var checkboxCellArray = elem.find('.md-checkbox-cell'); 

    _.forOwn(checkboxCellArray, function(node, i) { 
     if(angular.element(node).hasClass('md-checkbox-cell')){ 
     var element = angular.element('<p value="{{vm.selected.length}} checked. {{vm.headers[0].orderBy}}. {{vm.datasource.data['+ i +'].HolidayName}}. {{vm.headers[1].orderBy}}. {{vm.datasource.data['+ i +'].Country}}"></p>') 
     var compiled = $compile(element)(scope); 

     $timeout(function(){ 
      console.log(compiled); 
     }, 500) 
     } 
    }); 
    }, 1000) 
} 
İlgili konular