2017-06-23 67 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评论 –