Я изо всех сил старался работать с интервалом $. Поэтому я надеялся, что все здесь могут выправить меня. Вот мой случай.
У меня есть страница, содержащая кнопку «Обновить». когда эта кнопка нажата, она вызывает службу REST для обновления строки в таблице. На бэкэнде у нас есть процесс, который контролирует это поле и запускается, когда он видит представленную стоимость. Как только этот процесс будет выполнен, он изменит значение на завершенное.
То, что я пытаюсь сделать, - это нажать эту кнопку, а div отобразит статус «Отправлено». то я хочу использовать $ interval для опроса этого поля (через вызов REST) и изменить мой просмотр после его перемещения до значения «завершено». Вкратце измените представление «Отправлено» на «Завершено».
Моя проблема когда кнопка нажата, и я могу сделать мой отдых вызов, если я могу установить «таблицы данных» на сферу я получаю
TypeError: Cannot set property 'clst_rfrstatus_data_table' of undefined
Если изменить его и объявить таблицу данных, как так
var refreshStatus_data_table = StatusService.getRefreshStatus().get({cluster: $stateParams.cluster});
refreshStatus_data_table.$promise.then(function (data) {
for (var x = 0; x < data.message.length; x++) {
$scope.refresh_status = (data.message[x].status == "null") ? data.message[x].status = "" : data.message[x].status;
$scope.$digest;
}
});
},3000);
..snip..
я
ConsoleAgent: TypeError: Cannot set property 'refresh_status' of undefined
Я не после, если я не в объеме или что .. Любая помощь оценен.
Код:
MYAPP-routes.js
myAppconfig(function ($stateProvider, $urlRouterProvider) {
'use strict';
$urlRouterProvider.otherwise('/home');
$stateProvider
.state('status_page', {
url: '/status_page/:cluster',
templateUrl: 'views/clusters/status_page.html',
controller: 'StatusController'
})
..snip..
Контроллер
clusterApp.controller('StatusController',['$scope','$interval','$state','$stateParams','StatusService', function ($scope, $interval, $state, $stateParams, StatusService) {
$scope.refresh_status = "";
$scope.ButtonClick = function ($scope) {
$scope.refreshStatus_data_table = StatusService.getRefreshStatus().get({cluster: $stateParams.cluster});
$interval(function(){
$scope.refreshStatus_data_table.$promise.then(function (data) {
for (var x = 0; x < data.message.length; x++) {
$scope.refresh_status = (data.message[x].status == "null") ? data.message[x].status = "" : data.message[x].status;
$scope.$digest;
}
});
},3000);
..snip..
} //end controller
вид
<div>
<input type="button" value="Update" ng-click="ButtonClick()" />
Status: {{refresh_status}}
</div>
интересной, я извлекал $ объема от моего ButtonClick в моем контроллере '$ scope.ButtonClick = функция() { ..snip .. ' и он работает. Я не уверен, что я здесь сделал. Был ли мой код мышлением $ scope каким-то пустым объектом? – Danman06
Да, по существу переменная $ scope в вашем методе ButtonClick отличается от переменной clope вне метода. Это связано с изменением переменных, в основном, javascript создавал локальную переменную с именем $ scope, которая полностью отличалась от вашей глобальной области $ и доступна только в вашем вызове функции. Удаление из параметров метода отнимает эту локальную версию, чтобы ваша функция знала, что она использует глобальную. – bstockwell