我在做一個簡單的web項目,但是我遇到了Angular指令的一個問題。它不能重新渲染html,它只能在第一次渲染。這是我的代碼: http://plnkr.co/edit/Jc9wNoMrMlwAbRDsoviU?p=preview如何在Angularjs中使用新模板重新渲染指令?
app.directive('dyTemplate', ['$compile',function($compile) {
var getTemplate = function(contentType) {
templateMap = {
1: '<div><a href="" ng-click="changeTemplate(2)"> Change to Template 2</a></div>',
2: '<div><a href="" ng-click="changeTemplate(3)"> Change to Template 3</a></div>',
3: '<div><a href="" ng-click="changeTemplate(1)"> Change to Template 1</a></div>'
};
return templateMap[contentType];
}
return {
restrict: 'EA',
link: function(scope, element, attrs) {
// default load template
element.html(getTemplate(1));
element.replaceWith($compile(element.html())(scope));
scope.changeTemplate = function(templateId) {
element.html(getTemplate(templateId));
element.replaceWith($compile(element.html())(scope));
}
}
}
}
]);
可以看到你可以設置一個plunker – harishr 2014-10-08 04:07:58
是的,這是plunker:http://plnkr.co/edit/Jc9wNoMrMlwAbRDsoviU?p=preview – Hardin 2014-10-08 06:49:46