【问题标题】:AngularJS data doesn't refresh until second button click在单击第二个按钮之前,AngularJS 数据不会刷新
【发布时间】:2019-11-02 01:26:49
【问题描述】:

我想使用 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();
            });
    };

我正在使用这个搜索数据。这在第二次单击按钮后起作用。

【问题讨论】:

    标签: javascript jquery angularjs model-view-controller datatable


    【解决方案1】:

    我认为是观察者问题,使用 setTimeoutapply 来解决它:

     myApp.controller('myController', function($scope, $timeout){ // just example
    
      $timeout(()=>{
         $('#dtBasicExample').DataTable();
       })
    

     setTimeout(()=>{
         $('#dtBasicExample').DataTable();
         $scope.$apply(); //this triggers a $digest
       })
    

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

    同样,如果你有一个指令设置了一个 DOM 事件监听器并更改了处理函数内部的一些模型,你需要调用 $apply() 以确保更改生效。

    【讨论】:

    • 这种情况下不需要setTimeout,如果有那么angular有$timeout服务更好用。
    • @BillP,你是对的,$timeout 将 setTimout 替换为 $apply
    • 在你的第一个 sn-p 中有 $setTimeout 而不是 $timeout
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2023-03-22
    • 2019-11-05
    • 1970-01-01
    相关资源
    最近更新 更多