ngTable重载功能不更新表

时间:2014-11-26 19:25:33

标签: angularjs ngtable

我尝试过不同的解决方案,人们用来解决同样的问题,但我没有运气。我试图在$ http调用后更新表而不刷新整个页面。我使用“推”来更新非ngTables上的数组没有问题。任何帮助都会很棒,谢谢 我收到此错误消息

  

TypeError:无法读取未定义

的属性'push'

当我删除push命令时,它什么都不做。

  //Job  Table
     var data = [];
$http.get("/api/apiJob/").success(function (result) {
    data = result;
});
$scope.tableParams = new ngTableParams({
    page: 1,            // show first page
    count: 5           // count per page
}, {
    total: data.length, // length of data
    getData: function ($defer, params) {
        params.total(data.length);
        $defer.resolve(data.slice((params.page() - 1) * params.count(), params.page() * params.count()));
    }
});
//Update Job

$scope.updateJob = function (job) {
    job.JobTypeId = $scope.active.JobType.JobTypeId;
    job.JobClassId = $scope.active.JobClass.JobClassId;
    job.GeoAreaId = $scope.active.GeoArea.GeoAreaId;
    job = $scope.active;
    JobUpdate.update(job).success(function (job) {
        $scope.data.push(job);
        $scope.tableParams.reload();
        $scope.ok();
    }).error(function () {
        toastr.error('Error!');
    })
    console.log(job);
};

更新

 $scope.data = []
//var data = [];
$http.get("/api/apiJob/").success(function (result) {
    data = result;
});

错误消息位于data = result;

  

ReferenceError:未定义数据

1 个答案:

答案 0 :(得分:1)

您正在定义var data = [];$scope.data = [];这意味着$scope.data不存在,导致您展示的异常。要解决此问题,有必要将data的所有引用替换为本地范围,并替换为$scope.data

Angular $ scope仅使用分配给它的变量,忽略环境变量。在您的情况下,变量data正在更新,但您的$ scope不知道。

此外,函数JobUpdate.update(job).success(function (job) {未对范围应用更改,因为它位于不同的上下文中,在这种情况下,您需要使用$scope.apply,例如:

$scope.$apply(function() {
    $scope.data.push(job);
    $scope.tableParams.reload();
    $scope.ok();
});

您可以在此处查看有关$ scope的更多信息: AngularJS范围文档:https://docs.angularjs.org/guide/scope

范围问题:http://nathanleclaire.com/blog/2014/01/31/banging-your-head-against-an-angularjs-issue-try-this/