2015-06-20 44 views
0

簡單的問題,我相信,但我似乎無法推測出來,因爲我仍然是新的。我有一個輪詢設置查詢我的文件,它應該顯示在我的部分,但它不會在這裏是代碼:數據從輪詢不顯示裏面NG-重複

而且這個設置應該更新部分用新的數據每隔1秒是否正確?所以當我添加一個新的數據到文件。

app.factory('Poller', function($http, $timeout) { 

var data = { response: {}, calls: 0 }; 

var poller = function() { 
    $http.get('http://localhost/app/controllers/php/getProjects.php') 
    .then(function(r) { 
    data.response = r.data; 
    data.calls++; 
    $timeout(poller, 1000); 
    }); 
}; 
poller(); 

return { 
    data: data.response 
}; 

}); 

app.controller('openProjectsCtrl', ['$scope', '$http', 'projectsModal', 'Poller', 
function ($scope, $http, projectsModal, Poller) { 

    $scope.data = Poller.data; 

}]); 

<li class="list-item" data-ng-repeat="project in data | orderBy:'Posted' : true"> 
    <div data-ng-click="showModal(project.uid)"> 
     <h4>{{project.Title}}</h4> 
     <span>{{project.Skills}}</span><br/> 
     <div> 
      <span>{{project.Budget}}</span> 
      <span class="pull-right timestamp">{{project.Posted|timeago}}</span> 
     </div> 
    </div> 
</li> 

樣品JSON文件:

{ 
"item": [ 
{ 
    "uid" : "1", 
    "Title" : "Thing", 
    "Offers": "0", 
    "Skills": "1,2,3", 
    "Posted": "June 17, 2015 13:30:00", 
    "Budget": "$250" 
} 
] 
} 
+0

輪詢時您是否收到服務器的響應?你可以發佈JSON響應嗎?什麼樣的庫/模塊是'ngModal'?你在哪裏設置控制器? – Michael

+0

請忽略ng-modal指令,因爲我現在不使用它。我會在一秒鐘內更新json。 – Elevant

+0

'VAR數據= {響應:{},調用:0};'應'VAR數據= {響應:[],調用:0};' – ssuperczynski

回答

1

plunker http://plnkr.co/edit/VMXN58uIrmfYRUgydtbr

(function() { 
    'use strict'; 

angular.module('app', []); 

angular.module('app') 
    .controller('openProjectsCtrl', openProjectsCtrl); 

openProjectsCtrl.$inject = ['$scope', 'Poller']; 

function openProjectsCtrl($scope, Poller) { 
    $scope.data = Poller.data; 
} 

angular.module('app') 
    .factory('Poller', Poller); 

Poller.$inject = ['$http', '$timeout']; 

function Poller($http, $timeout) { 

var data = { response: [], calls: 0 }; 

var json = [{ 
    "id": 1, 
    "Skills": "Marketing Assistant", 
    "Budget": "$5.66", 
    "Posted": "7/14/2014" 
}, { 
    "id": 2, 
    "Skills": "Paralegal", 
    "Budget": "$6.43", 
    "Posted": "9/7/2014" 
}, { 
    "id": 3, 
    "Skills": "Statistician II", 
    "Budget": "$5.06", 
    "Posted": "2/10/2015" 
}, { 
    "id": 4, 
    "Skills": "Payment Adjustment Coordinator", 
    "Budget": "$3.42", 
    "Posted": "1/19/2015" 
}]; 


var poller = function() { 
    // $http.get('http://localhost/app/controllers/php/getProjects.php') 
    // .then(function(r) { 
    // data.response = r.data; 
    // data.calls++; 
    // $timeout(poller, 1000); 
    // }); 
    angular.copy(json, data.response); 
}; 

poller(); 

return { 
    data: data.response 
}; 
} 
})(); 
+0

嘿,對不起,這是愚蠢的我,但我不能得到這個與$ http.get而不是你有json var一起工作。你能告訴我爲了發生什麼需要改變嗎? – Elevant

+0

是的,只是刪除我的JSON和替代這個'angular.copy(JSON,data.response);'把這個'angular.copy(r.data,data.response);'並取消我的評論 – ssuperczynski

+0

當我做我得到AR沒有定義錯誤? – Elevant

0

地方,你導航到 '項目' 的對象?

嘗試:

return { 
    data: data.response.item; 
}; 
0

寫你的服務這樣

app.factory('Poller', function($http) { 

return { 
     poll: function() { 
       return $http.get('http://localhost/app/controllers /php/getProjects.php'); 
      } 
     } 
}); 

用它在你的控制器這樣

app.controller('openProjectsCtrl', ['$scope', '$http', 'projectsModal', 'Poller','$interval' 
function ($scope, $http, projectsModal, Poller,$interval) { 

$interval(function(){ 
    Poller.poll().success(function(response){ 
     $scope.data=response.data; 
    }).error(function(error){ 
     //handle error here 
    })},1000); 
}]); 
+0

應該如何被HTML奠定了這個工作? – Elevant

+0

爲了得到一個清晰的畫面,我需要知道你收到此request.Is它,你已經爲你的file.You書面可以登錄控制檯中的反應,看看 – Abdul23

+0

間隔200毫秒同一JSON響應不是一個很好的解決方案 – ssuperczynski