我尝试过不同的解决方案,人们用来解决同样的问题,但我没有运气。我试图在$ 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:未定义数据
答案 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/