2014-11-26 2 views
1

Ive пробовал разные решения, которые люди использовали для решения одной и той же проблемы, но мне не повезло. Я пытаюсь обновить таблицу после вызова $ http без обновления всей страницы. Я использую «push» для обновления массивов на non ngTables без проблем. любая помощь будет здорово, спасибо я получаю сообщение об ошибкеngTable функция перезагрузки, не обновляющая таблицу

TypeError: Cannot read property 'push' of undefined

Когда я удаляю команду нажимной она ничего не делает.

//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; 
}); 

Сообщение об ошибке находится на данных = результат;

ReferenceError: data is not defined

ответ

1

Вы определяете var data = []; вместо или $scope.data = []; Это означает, что $scope.data не существует, в результате чего исключения вы показали. Чтобы решить эту проблему, необходимо заменить все ссылки на data на местную область и заменить на $scope.data.

Угловая $ scope использует только назначенные ей переменные, игнорируя переменные окружения. В вашем случае переменная data обновляется, но она не известна вашей $ scope.

Кроме того, функция JobUpdate.update(job).success(function (job) { не применяя изменения в объеме, потому что это в другом контексте, в этом случае вы должны использовать $scope.apply, например:

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

Вы можете проверить более подробную информацию о $ объеме здесь: AngularJS Scope Doc: https://docs.angularjs.org/guide/scope

Объем выпуска: http://nathanleclaire.com/blog/2014/01/31/banging-your-head-against-an-angularjs-issue-try-this/

+0

я на самом деле пытался это, но он дает ошибку я просто отправил – texas697

+0

Вы также должны заменить его в запросе $ http. Это должно быть '$ scope.data = result'. Попробуйте это и посмотрите, работает ли это: –

+0

Такое же сообщение об ошибке: total.length, // длина данных – texas697

 Смежные вопросы

  • Нет связанных вопросов^_^