我正在尝试创建一个显示一些嵌入内容的模板。当我使用 ng-show 时一切正常,但使用 ng-if 或 ng-switch 会给我带来问题。我收到此错误消息:在模板中非法使用 ngTransclude 指令!没有找到需要嵌入的父指令
我了解 ng-switch 创建了一个新范围。但是嵌入应该仍然上升到父链。这是angularjs的缺陷吗?见http://jsfiddle.net/HgvP7/
这是我的 html,从文档示例修改:
<div ng-app="docsTransclusionExample">
<div ng-controller="Ctrl">
<my-dialog>Check out the contents, {{name}}!</my-dialog>
</div>
<!-- my-dialog.html -->
<script type="text/ng-template" id="my-dialog.html">
<div ng-switch="1+1">
<div ng-switch-when="2">
<div ng-transclude></div>
</div>
</div>
</script>
</div>
和代码:
angular.module('docsTransclusionExample', [])
.controller('Ctrl', function($scope) {
$scope.name = 'Tobias';
})
.directive('myDialog', function() {
return {
restrict: 'E',
transclude: true,
scope: {},
templateUrl: 'my-dialog.html',
link: function (scope, element) {
scope.name = 'Jeff';
}
};
});