javascript – 文件准备好角度

当你点击一个复选框时,我想发一些jQuery代码.问题是当我第一次点击选择框加载页面时,没有任何反应.但是当我再次点击时,会执行jQuery代码.我试过设置angular.element(ready)如下,但它不起作用:

angular.element(document).ready(function() {
        $http.get($rootScope.appUrl + '/nao/test/test')
            .success(function(data, status, headers, config) {
                $scope.test = data.data;
        });
        $scope.testa = function() {
                $('.checkboxfisk').click(function() {
                var fish = $(this).attr('id');
                alert(fish);    
                });

        };
});

<tr ng-repeat="info in test"><td>{{info.stracka}}</td><td>{{info.tid}}</td><td><input type="checkbox" id="{{info.id}}" class="checkboxfisk" ng-click="testa()"></tr>

最佳答案 在Angular中与DOM交互的正确方法是创建自己的自定义指令.然后,您可以在you指令的postLink函数中连接jQuery处理程序(Angular在加载时构建页面时运行).您的处理程序将在那里并在页面准备好时等待.

看一下Angular的指令文档,并给它一个镜头:

AnuglarJS: Developer Guide: Directives

但是,看看你的例子,这可能太多了.根本没有必要让jQuery监听click事件.您只需要在函数定义周围删除jQuery包装器,让Angular处理click事件本身:

$scope.testa = function(id) {
    alert(id);
};

然后修改ng-click属性以传递表达式中的id:

<input type="checkbox" 
       id="{{info.id}}" 
       class="checkboxfisk" 
       ng-click="testa(info.id)">
点赞