Angularjs 角度模板编译javascript

Angularjs 角度模板编译javascript,angularjs,ngsanitize,Angularjs,Ngsanitize,我有从服务器加载模板的控制器。 控制器通过http接收模板并将其编译为有效的html。 一切都很好,但是js打电话来了 我的模板包含带有href javascript/onclick操作的href/按钮。 以下是简化的代码片段: /*全局角度*/ var app=angular.module(“app”,[“ngSanitize”]); app.controller('app.core.ctrl',函数($scope、$rootScope、$interpolate){ “严格使用”; $sco

我有从服务器加载模板的控制器。 控制器通过http接收模板并将其编译为有效的html。 一切都很好,但是js打电话来了

我的模板包含带有href javascript/onclick操作的href/按钮。 以下是简化的代码片段:

/*全局角度*/
var app=angular.module(“app”,[“ngSanitize”]);
app.controller('app.core.ctrl',函数($scope、$rootScope、$interpolate){
“严格使用”;
$scope.check=1;
$scope.fetchContent=function(){
$scope.content=$interpolate(
''+
'' +
'我的业务模板按钮{{check+1}}'
)($范围);
};
$scope.fetchContent();
});
var callSuperLogic=函数(){
“严格使用”;
警惕(‘它工作了!!!’);
};
a,
钮扣{
显示:块;
}
div{
边框:1px实心#A6;
}

我的模板调用:

如果ngInclude不符合您的需要,最好的方法是使用指令,这样您就可以直接访问元素并使用jQuery将内容放入其中:

module.directive('myTemplate', function() {
  return {
    compile: function(tElement) {
      var html = '<button onclick="clickme()">Click me!</button>';
      tElement.replaceWith(html);
    }
  };
});
您可以这样使用:

<my-template url="myurl/template.html"></my-template>

编辑


要在url更改时重新加载:

您是否尝试过取消单击?是的,我尝试过。同样的结果。您可以尝试使用代码段进行检查。要编辑代码段,请将其复制到答案并在弹出窗口中编辑代码段。建议不错!这看起来像是“我自己的21点游戏”。您可以使用url=“{someValue}}}”并使用$scope.someValue=newUrl重新加载来改进annswer。我是否能够通过控制器操作手动更新我的内容?我想写一些交互式数据编辑与内容更新。是否有任何方法可以动态更新元素的内容?更新后,我无法使用代码片段进行ajax调用。是否有任何方法可以在用户操作时更新元素的内容?我想更新内联编辑器之类的代码。它已经在用户操作上更新内容了,这是什么意思?意味着我想在用户事件(如ng click)上更新内容,从而实现所见即所得(WYSIWYG)。这样,我需要将我的更新推送到服务器,然后使用链接更新再次轮询它。这意味着sontent被上传和下载。
<button onclick="clickme()">Click me!</button>
module.directive('myTemplate', function($http, $compile) {
  return {
    link: function(scope, element, attrs) {
      $http.get(attrs.url).then(function(res) {
        tElement.replaceWith($compile(res.data)(scope));          
      });
    }
  };
});
<my-template url="myurl/template.html"></my-template>