2015-07-21 74 views
0

下面的代碼在首次啓動對話框時似乎不起作用。未使用角度範圍填充Jquery對話框

 $scope.ke_location_channel_summary = function (region_id, region) { 

     $scope.region_data = $scope.location_channel_data[region_id]; 

      killed_enquiries_services.open_dialog('popup', region); 
      $('#popup').html($('#location_channel_summary').html()); 

    }; 

但它與下面的變化工作

 $scope.ke_location_channel_summary = function (region_id, region) { 

     $scope.region_data = $scope.location_channel_data[region_id]; 

     window.setTimeout(function() { 
      killed_enquiries_services.open_dialog('popup', region); 
      $('#popup').html($('#location_channel_summary').html()); 
     }, 0); 
    }; 

代碼的HTML一邊是

<div id="location_channel_summary" style="display: none"> 
<table class="standardTable"> 
    <tr> 
     <th class="left-col-heading">Channel</th> 
     <th class="center">Qty</th> 
     <th class="center">Nights</th> 
     <th class="center">Value</th> 
     <th class="center">Avg Value</th> 
     <th class="center">ADR</th> 
    </tr> 
    <tr ng-repeat="ctype in contacttypes | orderBy:['sort_order']"> 
     <td style="width:25%;" class="left-col-td">{{ctype.name}}</td> 
     <td ng-repeat="column in columns" class="center">{{region_data[ctype.id][column]}}</td> 

    </tr> 
</table> 

我想顯示在股利內容jquery對話框。該表返回的空白內容沒有setTimeOut。這是爲什麼?

回答

1

這可能是因爲AngularJS觀察器是異步的,需要一些時間來解決表達式{{ctype.name}}{{region_data[ctype.id][column]}}

1

你不應該試圖在角度內處理Jquery。我會建議通過ui.boostrap模塊構建Dialog。

你正面臨着這個問題,導致角度不立即做「一切」。它必須運行多個摘要來呈現最終頁面......但Jquery對此沒有任何線索,並在角度完成生成頁面之前啓動他的函數。

$('#popup').html($('#location_channel_summary').html()); 

這是發生之前角插入了這部分

<tr ng-repeat="ctype in contacttypes | orderBy:['sort_order']"> 
    <td style="width:25%;" class="left-col-td">{{ctype.name}}</td> 
    <td ng-repeat="column in columns" class="center">{{region_data[ctype.id][column]}}</td> 

</tr> 

的HTML可能是空白的首創一個NG重複消化,所以你要添加一個彈出沒有這一部分。然後對其進行角度解釋並生成它。但是您已經複製了未完全生成的HTML。