.NET 中的 DataTemplateSelector 等效于什么?

What's the equivalent of a DataTemplateSelector in .NET?

走出我的 .net 踩踏地,似乎无法弄清楚是否有与您在 .net 中使用 DataTemplateSelector 的等效项,但用于离子驱动 html5 和 angularjs项目。有人能给我指出正确的方向吗?

例如,我知道我可以通过快速 angular 进入 ng-repeat 之类的类似 ItemsControl 的等效项;

<ion-list>
   <ion-item ng-repeat="blah in something | orderBy:'whatever'" href="#/my/crap/{{blah.blah}}">
   <!-- stuff -->
   </ion-item>
</ion-list>

当然,我可以为每个生成的模板提供一个模板 child,但我需要在需要时将其翻转为一些不同外观的部分。

我搞砸了 ng-switch 但无法得到我想要的东西,如果它是我只是找不到的现有功能,我宁愿不 re-invent 轮子。

基本意图。在重复列表中提供多个项目模板,以根据某些条件显示不同的项目。有什么见解吗?谢谢

有多种方法可以达到 DataTemplateSelector 的效果 - 取决于您的需要和对 "elegancy" 的看法。可能最接近的是 ng-include,但对于简单的情况,您也可以使用 ng-ifng-switch.

1) ng-include

<div ng-repeat="item in items">
  <div ng-include="itemDataTemplateSelector(item)"></div>
</div>

$scope.itemDataTemplateSelector = function(item){
  if (item.type === "foo" && item.something.else) return "/path/to/foo/template.html";
  ...
}

2) 使用 ng-ifs

<div ng-repeat="item in items">
  <div ng-if="item.type === 'foo'">
    ... foo template
  </div>
  <div ng-if="item.type === 'bar'">
    ... bar template
  </div>
</div>

3) 使用 ng-switch

<div ng-repeat="item in items" ng-switch on="item.type">
  <div ng-switch-when="foo">
    ... foo template
  </div>
  <div ng-switch-when="bar">
    ... bar template
  </div>
</div>

这是一个plunker