Javascript AngularJS文档准备就绪,无法运行

Javascript AngularJS文档准备就绪,无法运行,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我试图在正在使用AngularJS打印的按钮上添加jQuery侦听器,该侦听器无法工作,因为该元素在DOM上尚不可用: var app = angular.module('myapp', []); socket.on('datasources/update:done', function () { socket.emit('datasources/list'); }); socket.emit('datasources/list'); app.factory('socket', func

我试图在正在使用AngularJS打印的按钮上添加jQuery侦听器,该侦听器无法工作,因为该元素在DOM上尚不可用:

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

socket.on('datasources/update:done', function () {
  socket.emit('datasources/list');
});

socket.emit('datasources/list');
app.factory('socket', function ($rootScope) {
  return {
    on: function (eventName, callback) {
      socket.on(eventName, function () {
        var args = arguments;
        $rootScope.$apply(function () {
          callback.apply(socket, args);
        });
      });
    },
    emit: function (eventName, data, callback) {
      socket.emit(eventName, data, function () {
        var args = arguments;
        $rootScope.$apply(function () {
          if (callback) {
            callback.apply(socket, args);
          }
        });
      })
    }
  };
});

function dslist($scope, socket) {
  socket.on('datasources/list:done', function (datasources) {
    $scope.datasources = datasources.datasources;
  });
}

angular.element(document).ready(function() {
  $('.delete-data-source').on('click', function(event) {
    console.log('a');
  })
});
HTML标记(jade):

相关HTML正文(jade):

试试这个:

$(document).on('click', '.delete-data-source', function(event) {
    console.log('a');
});
但我认为你的方法是错误的。你应该有这样的东西:

<div ng-repeat="datasource in datasources">
     <input type="button" ng-click="remove(datasource)" value="remove"/>
</div>

首先,angular应用程序应该绑定angular中的事件。您首先考虑的是
jQuery
,这是一种糟糕的方法。即使这是一种很好的方法,您也没有在编写的jQuery中使用事件委派。请阅读:@charlietfl这看起来很棒,现在就阅读!谢谢。当我们从角度开始。。。。甚至不要在页面中包含jQuery。使我们更容易首先开始寻找角度接近。你会惊奇地发现,实际上使用jQuery时,它的工作效率是多么的低,但出于某种原因,只需要第二次点击。。你能解释一下你的代码和我的代码之间的区别吗?区别在于我的代码正在侦听文档单击事件,然后找出单击的元素是否有
。删除数据源
类asigned,你的代码尝试查找类为
的元素。删除数据源
,但它尚未添加到dom,所以我找不到它
$(document).on('click', '.delete-data-source', function(event) {
    console.log('a');
});
<div ng-repeat="datasource in datasources">
     <input type="button" ng-click="remove(datasource)" value="remove"/>
</div>
$scope.remove = function(datasource){
    $scope.datasources.splice($scope.datasources.indexOf(datasource), 1);
}