2016-03-25 5 views
0

基本的な前提は、コンパイルして変数にコピーした後、要素のvalue属性にアクセスしようとしていることです。例:vm.datasource.data ['+ i +']。HolidayNameが "Christmas"にコンパイルされている場合、その値を取得して変数に格納します。角度要素からコンパイルされたnodeValueを取得する方法

コンパイルされた値を変数にコピーすることはできますか?

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) 
    } 

答えて

0

溶液を5分...

を掲示した後、単純にスコープを追加し、私を見つけた汗を流しての時間後に思える。$(適用)コンパイル後、変数は更新された値を持つことになります。

+0

より良いアプローチのために、答えは下記をご覧ください。 –

0

本当の問題は、setTimeoutという機能を使用していて、そこから角度のものを更新していたことでした。 setTimeout外側の角度の世界から角度範囲を修正している非同期事象は、ダイジェストサイクルを実行するための緊密な角度ダイジェストシステムではない。 HTMLページ上のバインディングを更新するには、手動で起動する必要があります。この問題は、setTimeoutの代わりに$timeoutを使用すると簡単に修正できます。setTimeout &の機能を実行すると、その後にダイジェストサイクルが実行されます。

コード

$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) 
} 
関連する問題