Javascript 角度:ng重复中不同的HTML模板

Javascript 角度:ng重复中不同的HTML模板,javascript,angularjs,Javascript,Angularjs,我希望在重复块中根据我重复的数据类型使用不同的模板。在我的示例中,数组可以包含数据,也可以包含来自Twitter的tweet对象。目前我的代码看起来像这样 <ul data-ng-hide="sourceIsTwitter()" collapse="!showStrings"> <li data-ng-repeat="matchedString in matches">{{matchedString}}</li> </ul> <ul

我希望在重复块中根据我重复的数据类型使用不同的模板。在我的示例中,数组可以包含数据,也可以包含来自Twitter的tweet对象。目前我的代码看起来像这样

<ul data-ng-hide="sourceIsTwitter()" collapse="!showStrings">
    <li data-ng-repeat="matchedString in matches">{{matchedString}}</li>
</ul>
<ul data-ng-show="sourceIsTwitter()" collapse="!showStrings">
    <li data-ng-repeat="tweet in matches">
        {{ tweet.text }} 
        <i>{{ tweet.user.name }}</i>
        <a href="{{ tweetUrl(tweet) }}">{{ formatDateFromTwitter(tweet.created_at) }}</a>
    </li>
</ul>
  • {{{matchedString}
  • {{tweet.text} {{tweet.user.name}

。。。当内容源不是Twitter时会抛出很多错误。我应该如何根据对象的类型重新构造它以使用正确的模板?假设
matches
是一个对象数组,每个对象都有一个属性
类型
,我可以检查。

您可能最好使用该指令:

<li data-ng-repeat="obj in matches" data-ng-switch="obj.type">
    <span data-ng-switch-when="twitter"><!-- Do Twitter Rendering --></span>
    <span data-ng-switch-when="facebook"><!-- Do Facebook Rendering --></span>
    <span data-ng-switch-when="foo"><!-- Do Foo Rendering --></span>
</li>

  • 我遇到了这种情况,有很多可能的模板,这使得ng switch看起来有点笨重。我将每个模板放在它自己的html文件中,并使用ng include和scope函数来检索正确的模板名称:

    <ul>
        <li data-ng-repeat="match in matches">
            <div ng-include="getTemplate(match)"></div>
        </li>
    </ul>