无法使用工厂在ng-repeat中显示数据

时间:2014-04-16 05:33:03

标签: html angularjs

我创建了一个工厂并发出$ HTTP请求。我使用ng-repeat来显示数据。获取data from factory并将其添加到控制器中的$ scope变量无法显示数据。代码如上所述下方。

我使用console.log来返回json,它如下所述

JSON

[{"searchName":"this is test Job","id":"2"},{"searchName":"Job new","id":"1"}]

Angular JS代码

<script type="text/javascript">
  var formApp = angular.module("saveSearch",[]);
  formApp.controller("saveSearchController",function($scope,saveServiceSearch)
  {
     saveServiceSearch.getLatestSaveSearch().then(function(data){
      $scope.saveSearches  = data;
     });
   });

 formApp.factory('saveServiceSearch', function($http) {
    return  {
               getLatestSaveSearch: function() {
               var url = "/job_search_crud.html?act=gtSearchSv";
               return promise = $http.get(url,{cache: false});
               promise.success(function(data,status, headers, config){
               return $data;
               });
             promise.error(function(data,status, headers, config){
                 alert("::Request Failed::");
                 });
             }
           };
     });


 </script>

HTML

<html>
<body ng-app="formApp">
<div ng-controller="saveSearchController">

<table>
    <tr ng-repeat="saveSearch in saveSearches" >
    <td>{{saveSearch.searchName}}</td>
</tr>
</table>
</div>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

编辑:

<script type="text/javascript">
  var formApp = angular.module("saveSearch",[]);

  formApp.controller("saveSearchController",function($scope,saveServiceSearch)
  {
     saveServiceSearch.getLatestSaveSearch().then(function(data){
        $scope.saveSearches = data;
     });
  });

 formApp.factory('saveServiceSearch', function($http) {
    return  {
               getLatestSaveSearch: function() {
               var url = "/job_search_crud.html?act=gtSearchSv";
               return $http.get(url,{cache: false});
             }
       }});
 </script>

答案 1 :(得分:0)

使用$q

尝试此操作
myModule.factory('saveServiceSearch', function($q, $timeout, $http) {  
      var getLatestSaveSearch = function() {
        var deferred = $q.defer();
        var url = "/job_search_crud.html?act=gtSearchSv";
        var data = $http.get(url,{cache: false});
        $timeout(function() {
          deferred.resolve(data);
        }, 2000);

        return deferred.promise;
      };

      return {
        getLatestSaveSearch: getLatestSaveSearch
      };

    });
相关问题