javascript - 将模板的 div 分成单独的模板或使用 ng-if 在具有多个 div 的单个模板中显示 div

标签 javascript html css angularjs

我是 angularjs 的新手,我需要知道哪个是为以下场景编写代码的更好方法。

场景:我有一个带有多个 div 的 html 模板,我将根据某些条件一次只显示一个 div。

我的想法: 1.) 我应该将 div 分成单独的小模板并在 templateURL 中使用它们还是 2.) 我应该使用 ng-if 在同一个模板 html 中显示和隐藏所需的 div。

注意:各个 div 显示在模态窗口中。

请帮我看看哪个更快。

最佳答案

这取决于。

如果您的 block 包含丰富的 html/css 并且渲染起来很重(或者如果 block 的数量很大 - 例如大型表格的可隐藏行) - 使用 ng-show/ng-hide 会更快。它不会删除/附加元素到 DOM,只是应用 display:none。

如果它们比较简单,你可以随意使用 ng-switch 或 ng-if。

在您的情况下,您一次只想显示一个 - 例如,您可以将 ng-include 与动态模板名称一起使用。我没有遇到任何性能问题。

<div ng-include="templateName"></div>

<script type="text/ng-template" id="templateOne.html">
   Something
</script>
<script type="text/ng-template" id="templateOne.html">
   Something another
</script>

$scope.$watchCollection('[condition1, condition2, ...]', function(conditionsArr){
     if(conditionsArr[0] && !conditionsArr[1]){
          $scope.templateName = 'templateOne.html';
     }else{
          $scope.templateName = 'templateTwo.html';
     }
});

关于javascript - 将模板的 div 分成单独的模板或使用 ng-if 在具有多个 div 的单个模板中显示 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24887896/

相关文章:

html - Div 降低而不是按钮

javascript - 如何使 Datebox Jquery Mobile 输入字段可点击?

Javascript AJAX 奇怪的行为

ASP.net 服务器事件在客户端处理

javascript - 使用 jQuery 将 Feb 17, 2012 转换为 17/02/2012

javascript - 调用输入的点击事件在 Safari 中不起作用

html - 避免 a 的其余悬停效果对 img 和标题超链接的悬停效果

html - 将图像堆叠在段落栏的顶部

javascript - 如何在 JSDoc 中描述解构的对象参数

jquery - 如何使我的悬停标题覆盖整个图像大小?