【问题标题】:AngularJS dynamically change template for ng-repeat directiveAngularJS 动态更改 ng-repeat 指令的模板
【发布时间】:2013-07-30 07:26:39
【问题描述】:

是否可以更改 ng-repeat 用于动态呈现每个元素的模板,例如在选择元素时从表格/列表视图切换到仅显示该元素的替代视图?

我想要的是,在选择 ng-repeat 表/列表中的元素后,切换到仅显示所选元素。但是我想保留ng-repeat 结构(过滤器,分页),因为我希望能够一次导航一个元素(左右说)并在任何时候返回表/列表它的结构到位。

一旦选择了一个元素,使用新模板切换到新路由可能会更容易,但是我如何才能仅通过过滤的项目保持导航并在返回时恢复到 ng-repeat 的保存状态路线?

我希望我已经解释得很好,提前谢谢你。

【问题讨论】:

    标签: angularjs angularjs-ng-repeat


    【解决方案1】:

    您可以在ng-repeat 指令中使用ng-switch 指令。这是一个基本示例:

    <ul>
      <li ng-repeat="color in colors" ng-switch on="color.value" >
        <span ng-switch-when="orange" style="background-color:{{color.value}};">{{color.name}}</span>
        <span ng-switch-default>{{color.name}}</span>
      </li>
    </ul>
    

    完整的jsFiddle

    更新

    在 cmets Ninja Pants 中澄清了最终目标是使用 ng-include 来包含模板。以下是更新后的 sn-p,展示了如何做到这一点:

    <ul>
      <li ng-repeat="color in colors" ng-switch on="color.value" >
        <span ng-switch-when="orange" ng-include src="'template.html'"></span>
        <span ng-switch-when="indigo" ng-include src="'template2.html'"></span>
        <span ng-switch-default>{{color.name}}</span>
      </li>
    </ul>
    

    还有一个full Plunker demo

    【讨论】:

    • 没想到要使用 ng-switch,谢谢!所以我可以将 ng-switch 与 ng-include 结合使用来换入/换出模板而不会出现任何问题?
    • 似乎有可能。因为我在 jsFiddle 上没有任何 template.urls 可以使用,所以很难演示。我尝试使用 jsFiddle 徽标 URL 作为我的模板 URL,它有点工作,所以我猜可以使用 ng-includes - jsfiddle.net/brettdewoody/X3aAU
    • 这确实有效,我创建了一个 Plunker 来尝试完整的实现 - plnkr.co/edit/WZBJJNCkwAJhPwAJrOZS?p=preview
    • 在上面添加了另一个模板,效果很好。谢谢分配!
    • 很高兴你提出这个问题,有趣的小实验。
    猜你喜欢
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2013-07-03
    • 1970-01-01
    相关资源
    最近更新 更多