2015-05-09 81 views

回答

2

指令:

myModule.directive('foo', function() { 
    return { 
     scope: { 
      templateType: '@' 
     }, 
     template: '<div ng-if="templateType == \'a\'">' + 
      ' this is template A ' + 
      '</div>' + 
      '<div ng-if="templateType == \'b\'">' + 
      ' this is template B ' + 
      '</div>' 
    }; 
}); 

模板:

<foo template-type="{{ templateType }}"></foo> 
<a ng-click="templateType = 'b'" href="">Set template to b</a> 

控制器:

$scope.templateType = 'a'; 
+1

我會建議使用不同的路由/查看每個局部視圖 – harishr

+1

什麼,如果這兩個模板很大..? –

+0

然後,您將該模板外部化到一個文件並使用templateUrl,就像其他指令一樣。 –

2

可以擴展所提供的示例通過@JB Nizet並使用ng-include來交換模板,並且管理更大尺寸的模板變得更容易。

myModule.directive('foo', function() { 
    return { 
     scope: { 
      templateType: '@' 
     }, 
     template: '<div ng-include="\'/templateRoot/\' + templateType">'+ 
        '</div>' 
    }; 
}); 

現在,您可以創建單獨的模板文件,並讓他們在特定的URL可以(在這種情況下/templateroot/a/templateroot/b

+0

的確有意義.. + 1 –