Javascript AngularJS数据不';在单击第二个按钮之前,请不要刷新

Javascript AngularJS数据不';在单击第二个按钮之前,请不要刷新,javascript,jquery,angularjs,model-view-controller,datatable,Javascript,Jquery,Angularjs,Model View Controller,Datatable,我想使用AngularJS添加jQuery数据表 $scope.SearchData = function () { var myData = new Object(); myData.EmployeeCode = $("#Person").val(); $http.post("/admin/GetData", myData) .then(function (response) { $s

我想使用AngularJS添加jQuery数据表

 $scope.SearchData = function () {
        var myData = new Object();
        myData.EmployeeCode = $("#Person").val();


        $http.post("/admin/GetData", myData)
            .then(function (response) {
                $scope.itemData = response.data.Initiator;
                $('#dtBasicExample').DataTable();
            });
    };

我用这个搜索数据。在第二次单击按钮后,此功能开始工作。

我认为这是观察者的问题,请使用setTimeoutapply来修复此问题:

 myApp.controller('myController', function($scope, $timeout){ // just example

  $timeout(()=>{
     $('#dtBasicExample').DataTable();
   })

Angular无法知道你可能会改变什么。在这种情况下,您需要手动调用$apply(),这将触发$digest循环


类似地,如果您有一个指令设置DOM事件侦听器并更改处理程序函数中的某些模型,则需要调用$apply(),以确保更改生效。

在这种情况下,不需要设置超时,如果有,angular有$timeout服务,它更适合使用。@BillP,您是对的,$timeout将setTimeout替换为$apply在第一个代码段中有
$setTimeout
,而不是
$timeout
 setTimeout(()=>{
     $('#dtBasicExample').DataTable();
     $scope.$apply(); //this triggers a $digest
   })