javascript - AngularJS 指令 - 编译不工作

标签 javascript angularjs angularjs-directive

ng-click 不工作。谁能帮我,如何使用 $compile

我创建了一个 plunker http://plnkr.co/edit/AhxGYnOsJ7rPqcQquMfq?p=preview

// main.js
var app = angular.module('myApp', ['ngGrid']);
app.controller('MyCtrl', function($scope) {

})
.directive('myDir', function($compile){
  return {
    restrict: 'CAE',
    link: function(scope, element, attrs){
      var dropdown = '';
      dropdown += '<ul class="dropdown-menu pull-right" role="menu" aria-labelledby="'+ attrs.id +'">';
      dropdown += '<li role="presentation"><a href="javascript:void(0);" ng-click="alert(\'a\')">Actions</a></li>';
      dropdown += '</ul>';
      //dropdown = $compile(dropdown)(scope);
      element.after(dropdown);
    }
  }
});

最佳答案

我会将点击功能提取到您的 Controller 中。您的 Controller 范围内没有 alert,因此它什么都不做。另外,如果可能的话,我尽量避免使用大量嵌套引号。一个简单干净的重构。

var app = angular.module('myApp', ['ngGrid']);
app.controller('MyCtrl', function($scope) {
    $scope.actionClick = function() {
        alert("a");
      }
})
.directive('myDir', function($compile){
  return {
    restrict: 'CAE',
    link: function(scope, element, attrs){
      var dropdown = '';
      dropdown += '<ul class="dropdown-menu pull-right" role="menu" aria-labelledby="'+ attrs.id +'">';
      dropdown += '<li role="presentation"><a href="javascript:void(0);" ng-click="actionClick()">Actions</a></li>';
      dropdown += '</ul>';
      dropdown = $compile(dropdown)(scope);
      element.after(dropdown);
    }
  }
});

see plunkr

关于javascript - AngularJS 指令 - 编译不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20454987/

相关文章:

javascript - requestAnimationFrame 在函数的开头或结尾?

javascript - codemirror 搜索使用 javascript 模拟 CTRL+F 键

javascript - 如何在 Leaflet.js 中使用 Angular JS

javascript - AngularJS - 预加载模板不适用于指令

javascript - 正则表达式用两个分隔符分割字符串

javascript - EXTJS 5 - 如何禁用菜单中的某些项目

javascript - AngularJS无法读取未定义的属性 'otherwise'

javascript - JS 函数声明不应放在 block 中

angularjs - 在AngularJS中将iframe动态插入页面

javascript - 无法让动态模板在 Angular 指令中工作