2017-06-23 116 views
2
$scope.templateDOM = templatePath; 

<div id="Template" ng-include="templateDOM"></div> 

情景NG-包括未包括用於第二次模板刪除模板

  1. 我已經加入附加到範圍後的templatePath。

  2. 添加templatePath之後可以在頁面中看到templateDOM。

  3. 現在從頁面jQuery("#templateDOM").remove();中刪除templateDOM。

  4. 我再次嘗試執行$scope.templateDOM = templatePath;這個邏輯。

  5. 執行第4步後,我無法看到頁面中的templateDOM。

回答

0

如果您直接訪問模板,則必須使用''。

<div id="Template" ng-include="'templateDOM'"></div> 

和模板的拆除應該用正確的ID

jQuery("#template").remove(); 

我會建議你使用NG-如果您的股利,而不是去除與jQuery

$scope.templateDOM = templatePath; 

<div id="Template" ng-if="var" ng-include="templateDOM"></div> 

觸發$scope.var爲真或假以在您的模板中顯示/隱藏div。

問題是在刪除div後,您不在模板中添加該div。因此,觸發ng-include的$ scope值不會有什麼區別,因爲該div不再存在於您的模板中。所以你必須把它加回來。 如果你想使用jQuery,然後按照這個方案

  1. 添加和的templatePath追加範圍。
  2. 添加templatePath後可以看到 頁面中的templateDOM。
  3. 現在分離模板DOM從 頁面jQuery(「#templateDOM」)。detach();.
  4. 執行$ scope.templateDOM = templatePath; ,追加回文檔的正文。

如何分開,然後將元素追加回來的jQuery:How to Restore an Element Removed with jQuery?

希望它能幫助:)

+0

它不是仍然爲我工作 –

+0

我只刪除了正確的模板ID –

+0

它不工作,因爲無法獲取該特定的div實例一次你刪除它使用jquery – Vivz

0

試試這個:

$scope.templateDOM = 'templatePath'; 

<div id="Template" ng-include="templateDOM"></div> 
+0

它不會工作@hirarthi panchal?它將appen的templatePath字符串dom –

+0

tempalatepath =它的dom模板的路徑 –

0

在第四步你想包括一個已經被刪除的div?你可以試試.detach()或.empty()而不是.remove嗎?

+0

我嘗試使用detach和空仍然模板dom不附加到頁 –

+0

嘿而不是使用jquery,請嘗試此ng-click =「remove()」刪除功能將清空html。 $ scope.remove = function(){ element.html(''); }; –

+0

仍然是相同的問題,無法附加templateDom頁面後刪除 –

1

您可以添加一個查詢字符串(它可能是從Date.now()時間戳)模板路徑的背後像爲:

$scope.templateDOM = '/tempalte/view.html?a=' + Date.now(); 

<div id="Template" ng-include="templateDOM"></div> 

當查詢字符串更改將重新編譯。只是,當你想重新編譯它時,你應該設置路徑with Date.now()

另一件事,我認爲用jQuery刪除元素不是一個好方法。您可以使用ng-if將其從DOM中移除,而不是。

+0

好極了,它現在適用於我後,追加data.now()。它的重新編譯也非常感謝... –

+0

@manjunathdr它很好。你很好。如果你選擇我的答案是正確的,這將使我感到高興:) –

0
  • 其實爲什麼你在angularjs中使用jquery?這很糟糕。你可以通過angular.element()來完成。 因爲你的代碼可能會從範圍刪除DOM當前

  • 那麼爲什麼你想刪除該模板,然後添加?

您可以通過使用ng-showng-hideng-if做到這一點,像


<div id="Template" ng-show="isTemplate" ng-include="templateDOM"></div> 
  1. 需要追加的templatePath和使用標誌像$scope.isTemplate=true

  2. 添加templatePath之後可以在頁面中看到templateDOM。

  3. 現在,通過使用$scope.isTemplate=false

  4. 同樣,如果你想顯示隱藏templateDOM,然後用$scope.isTemplate=true

  5. 執行4步後,你可以看到elemtn

+0

非常感謝你的回覆它的解決方案 KamuranSönecek評論 –