动态自定义 Angular 指令/$compile 不适用于 .innerHTML()

Dynamic custom Angular directive/$compile not working with .innerHTML()

我有一个计时器应用程序。当倒数计时器达到一定数量时,计时器将停止,并且将使用 .innerHTML() 在另一个 div 标签内创建一个 div 标签。此 div 标签包含一个名为 dynamic 的自定义 Angular 指令。该指令应该 $compile 一个带有 button 标签的模板,点击时调用 Angular 控制器 timerControl 中的一个函数。

当前发生的是计时器 运行 启动并在我的 timerControl 控制器中触发以下 if 语句...

if(time_until_break-- < 0){  
    document.getElementById('test').innerHTML= '<div dynamic></div>'
}  

它应该通过以下指令 运行 并在以下每个指令的 html 后附加一个 button...

grindModule.directive("dynamic", function($compile){
return{
    link: function(scope, element){
        var template = "<button ng-click='timerControl.resetTimer()'>Keep Working</button>";
        var linkFn = $compile(template);
        var content = linkFn(scope);
        element.append(content);
    }
}

});

但它只会将以下内容附加到 HTML...

<div dynamic></div>

什么给了?

我似乎无法在 Stack Overflow 上找到任何告诉您如何在 $scope 之后或之前将 link 一个 HTML 元素附加到 [=] 27=] 使用 .innerHTML().

当您手动添加标记时,例如

document.getElementById('test').innerHTML= '<div dynamic></div>'

您正在绕过所有 AngularJS 代码。你应该这样做:

angular.element("#test").html('<div dynamic></div>');