Javascript AngularJS数据不';在单击第二个按钮之前,请不要刷新
我想使用AngularJS添加jQuery数据表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
$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();
});
};
我用这个搜索数据。在第二次单击按钮后,此功能开始工作。我认为这是观察者的问题,请使用setTimeout和apply来修复此问题:
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
})