javascript - 如何将事件附加到链接函数中创建的dom

标签 javascript angularjs

我知道在模板函数中创建的 dom 可以附加到 Controller 中的事件。如:

angular.module('app', [])
  .directive('appClick', function(){
     return {
       restrict: 'A',
       scope: true,
       template: '<button ng-click="click()">Click me</button> Clicked {{clicked}} times',
       controller: function($scope, $element){
         $scope.clicked = 0;
         $scope.click = function(){
           $scope.clicked++
         }
       }
     }
   });

由于模板中没有范围,所以我必须使用链接功能。 同样如何在链接功能中实现。喜欢:

 angular.module('app', [])
      .directive('appClick', function(){
         return {
           restrict: 'A',
           scope: true,
           link:function(scope, element, attrs){
  element.html('<button ng-click="click()">Click me</button> Clicked {{clicked}} times')
},
           controller: function($scope, $element){
             $scope.clicked = 0;
             $scope.click = function(){
               $scope.clicked++
             }
           }
         }
       });

如何在此处附加事件。

最佳答案

Angularjs 中,当您想将一些 DOM 附加到现有的 DOM 时。您首先必须在要使用模板的范围 上使用$compile 服务对其进行编译。这是因为模板包含 Angular js 模板语法。以下是工作片段。

var myApp = angular.module('myApp', []);

myApp.controller('mainController', ['$scope', function($scope){
   $scope.message = 'Welcome message';
}])

myApp.directive('myTemplate', ['$compile',function($compile) {
  return {
    restrict: 'A',
    scope: true,
    link: function(scope, element, attr) {
    
      var el = $compile('<button ng-click="click()">Click me</button> Clicked {{clicked}} times')(scope);
      element.append(el);

      scope.clicked = 0;
      scope.click = function(){
         scope.clicked++
      }
    }
  }
}])
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myApp">
  <div ng-controller="mainController">
    {{message}}
    <div my-template></div>
  </div>
</div>

关于javascript - 如何将事件附加到链接函数中创建的dom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46504446/

相关文章:

javascript - 无法解决 index.html 中的错误

angularjs - 使用最新的不稳定分支生成 Angularjs 应用程序?

javascript - 使用内联脚本时未定义动态加载的 jQuery

javascript - 如何从不同的URL中提取特定的参数

javascript - 在加载到主页的部分页面中使用 Angular

javascript - 如何在 AngularJS 上创建模块/插件

javascript - Select 不保留用户选择的值

javascript - 无法将 API 响应中的错误传递给 Formik 错误显示

javascript - 绑定(bind)样式使整个页面跳跃(滚动)

javascript - knockout 双向绑定(bind)到对象