我的webapp中有一个标签式导航,看起来像这样
现在我想在每次用户点击其中一个导航点时更改指令。我的想法是使用第一个模板初始化页面。
$scope.currentDirective = $compile('<div order-Sale></div>');
然后,当用户点击选项卡时,我想再次使用新指令更改和编译内容。但由于某种原因,这是行不通的。您将如何处理以存档此动态内容加载?我真的只想根据需要加载内容,而不仅仅是显示或隐藏它。我认为使用指令是正确的方法,但我只是坚持实现...有人指针吗? (我不想使用任何jQuery)
我尝试了什么[编辑]:
controller.js
app.controller('pageController',['$scope','$compile', function($scope, $compile){
var templates = ['<div first-template></div>','<div second-template></div>'];
$scope.currentTemplate = $compile(templates[0]);
$scope.changeTemplate = function(id) {
$scope.currentTemplate = $compile(templates[id]);
};
}]);
HTML
<div ng-controller="pageController">
<li>
<a ng-click="changeTemplate('1')">Change Template</a>
</li>
{{currentTemplate}}
</div>
答案 0 :(得分:1)
ngBind
&amp; {{ }}
)。这是plunker
app.controller('pageController',['$scope','$compile','$sce', function($scope, $compile, $sce){
var templates = ['<div>first-template</div>','<div>second-template</div>'];
$scope.currentTemplate = $sce.trustAsHtml(templates[0]);
$scope.changeTemplate = function(id) {
$scope.currentTemplate = $sce.trustAsHtml(templates[id]);
};
}]);
标记:
<div ng-controller="pageController">
<button ng-click="changeTemplate('1')">Change Template</button>
<div ng-bind-html="currentTemplate"></div>
</div>
如果您想再次更改和编译内容,那么这正是ng-view
/ ui-view
指令已经为您做的。
ngRoute
和ui-router
带有自己的指令。