根据条件在循环中添加指令

时间:2014-12-05 11:36:32

标签: angularjs angularjs-directive angularjs-ng-repeat

我有一个timeline.json喜欢:

[{
 "from":"twitter",
  //...
},
{
 "from": "facebook"
//...
}]

基于from属性我需要“渲染”特定指令:post-twitter或post-facebook 在循环内

我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

您可以根据传递的参数创建一个编译所需指令的指令。

类似的东西:

.directive('renderOther', function($compile) {
  return {
    restrict: 'E',
    scope: {
      type: '='
    },
    link: functtion(scope, elem, attrs) {
      var dir = $('<post-' + scope.type + '></post-'+scope.type+'>');
      dir.appendTo(elem);
      $compile(elem.contents())(scope);
    }
  }
});

HTML:

<div ng-repeat="i in items">
  <render-other type="i.from"></render-other>
</div>

(它不是工作代码 - 只是一个想法)

答案 1 :(得分:1)

有几种方法。您可以在链接阶段使用ng-switch,ng-if或自定义处理函数。您可以在文档中找到更多信息。

基本上,在基于条件语句调用指令的标记之间切换,即模型中的“from”值。例如,您可以将ng-if指令与ng-include结合使用,以根据此条件呈现模板的一部分。只要确保它不会降低性能。