Javascript AngularJS:使用指令预先编写HTML

Javascript AngularJS:使用指令预先编写HTML,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,Service.js this.showSpinner = function (Id) { angular.element("<wave-spinner id='spinner00' ng-show='true'></wave-spinner>").remove(); var myEl = angular.element(document.querySelector("#header00")) myEl.prepend($compile("<

Service.js

this.showSpinner = function (Id) {

    angular.element("<wave-spinner id='spinner00' ng-show='true'></wave-spinner>").remove();
    var myEl = angular.element(document.querySelector("#header00"))
    myEl.prepend($compile("<wave-spinner id='spinner00' ng-show='true'></wave-spinner>")($rootScope));
};
this.showSpinner=函数(Id){
angular.element(“”.remove();
var myEl=angular.element(document.querySelector(“#header00”))
myEl.prepend($compile(“”($rootScope));
};
HTML

<div id="header00" style="">Some Content</div>
一些内容
我尝试使用中提到的
prepend
方法,但它不起作用

  • 如何在div
    header00
    之前显示指令。append与 指令,但不是。在匹配的div之前添加任何html内容 元素
  • 再次调用指令时,如何删除现有的html。
    remove()
    对我不起作用

  • 您可以这样做:

    <wave-spinner id='spinner00' ng-show='isLoadingContent'></wave-spinner> 
    <div id="header00" style="">Some Content</div>
    

    您可以这样做:

    <wave-spinner id='spinner00' ng-show='isLoadingContent'></wave-spinner> 
    <div id="header00" style="">Some Content</div>
    

    您的代码只需要简单的更改。将不存在的before功能切换到prepend(您说您已经尝试过了,但我相信这是解决此问题的方法)

    myEl.prepend($compile(“”($rootScope));
    

    当然,我签入了JSFIDLE-

    您的代码只需要简单的更改。将不存在的before功能切换到prepend(您说您已经尝试过了,但我相信这是解决此问题的方法)

    myEl.prepend($compile(“”($rootScope));
    

    为了确保我签入了JSFIDLE-

    wave spinner将是前置的,我已经显示了最终的dom。另外,当用户再次执行相同的操作时,我如何首先删除它?如果您希望它不仅隐藏,而且不在html中生成,那么使用ng if而不是ng show,ng if不会在dom中生成元素,唯一的技巧是它会创建一个额外的内部作用域。我将使用一个方法,只需对
    isLoadingContent
    的当前值求反,就像这样
    this.isLoadingContent=!这是一个.isLoadingContent方法。
    wave spinner
    将前置到div,并且不会在加载时显示/隐藏。然后我看不到
    ng show='true'
    中的任何点,并且您的方法比角度方法更具jQuery性。我真的不明白为什么不把它放在html中,但必须附加/前置它。请详细说明为什么您坚持使用这种方法?因为我希望在用户执行任何操作时调用该指令,而不是在页面上。loadwave spinner将是前置的,我已经显示了最终的dom。另外,当用户再次执行相同的操作时,我如何首先删除它?如果您希望它不仅隐藏,而且不在html中生成,那么使用ng if而不是ng show,ng if不会在dom中生成元素,唯一的技巧是它会创建一个额外的内部作用域。我将使用一个方法,只需对
    isLoadingContent
    的当前值求反,就像这样
    this.isLoadingContent=!这是一个.isLoadingContent方法。
    wave spinner
    将前置到div,并且不会在加载时显示/隐藏。然后我看不到
    ng show='true'
    中的任何点,并且您的方法比角度方法更具jQuery性。我真的不明白为什么不把它放在html中,但必须附加/前置它。请详细说明为什么您坚持使用这种方法?因为我希望在用户执行任何操作时调用该指令,而不是在页面加载时
    myEl.prepend($compile("<wave-spinner id='spinner00' ng-show='true'></wave-spinner>")($rootScope));