Angular 指令未扫描 Javascript createElement

标签 javascript jquery angularjs

我在脚本标签中创建了一个新的 DOM 元素

$( "#droppable_home" ).droppable({
 ....
 drop:
  //Create the new widget element. This renders in my page in Chrome's inspect view.
  var obj = document.createElement('widget');
  obj.id = "draggable_button";
  obj.style.cssText = 'position: absolute;left: 35%;top: 50%;';
  $("#droppable_home").parent().append(obj);
 ..........
});

我扫描“小部件”元素的 Angular Directive(指令)如下

.directive('widget', function($compile) {
 var show = function(scope, element, attrs) {
 var render = function() {  
  alert('Found '+element.attr('id'));   
  if(element.attr('id') === 'draggable_button'){
   alert('placing widget');
   element.html('<div id="widget_button" class="button button-positive" unbindable><span ng-bind="widgetname"></span></div>');
   $compile(element.contents())(scope);
  }
 };

scope.$watch('drag', function(newValue, oldValue) {
   alert('drag changed');
   if(newValue > 0) render();
});

};

return {
  restrict : 'E',
  link : show
 };
})

问题——上面使用 jQuery 创建的元素永远不会被 Angular 指令识别。
很高兴知道缺少什么。

最佳答案

不要使用 document.createElement,而是尝试以下方法: - element.id 是放置“ng-app”的元素的 id

var el = angular.element( document.getElementById("element.id") );

var scope = el.scope();
var injector = el.injector();

var $compile = injector.get("$compile");

var mynewel = $compile("<div widget></div>")(scope)

关于Angular 指令未扫描 Javascript createElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26356975/

相关文章:

javascript - 即时创建方法

javascript - 将清晰的文本渲染为 three.js 纹理

javascript - jQuery end() 不能与extend() 一起使用

javascript - 从CSS属性后台url获取文件名

javascript - 从 AngularJs Directive 调用 Dropzone.js 函数

angularjs - UI-Router 不会从 URL 正确状态

javascript - 在 JS 中对同一个节点多次使用 appendChild

javascript - 尝试了解导致此 JavaScript 错误的原因

AngularJS 网站 : single SPA vs multiple SPA apps/components

javascript - 为什么我的 Canvas 只加载左上角的图像?