2017-04-11 2 views
0

入力日付を入力することで、サービスから出力データを取得する必要があります。データはサービス中に実行されますが、出力データをコントローラに返すことができません。私はcode.linkのためのplunkerを作った プラウカーリン​​クサービスのためのデータを角で返す

+0

https://plnkr.co/edit/4Uho7njMAXryTDOfwcLP?p=preview –

+0

カント質問 –

答えて

3

objを言います。このよう

return $http({ 
    url: 'miqaat.json', 
    method: 'GET', 
}) 
.then(function(response) { 

    var all_miqaats = response.data.response; 
    var obj = all_miqaats.find(function(v) { 
     return v.miqaat_date == dat 
    }); 

    if (obj == undefined || obj == "") { 
     console.log("obj = "); 
     console.log(obj); 
     obj.isHoliday = "100"; 
     // return obj; 
    } else { 
     obj.mq_title = obj.title; 
     obj.isHoliday = "101"; 
     // return obj; 
     console.log("Data from Service"); 
     console.log(obj); 
    } 

    return obj; 
}) 

そして、これは約束を返すために、コントローラにあなたはそれを変更する必要があります:あなたはcontrollerにご.thencatchを移動すべきか否か

getMiqaat.findMiqaat($scope.date).then(function(res) { 
    $scope.miqaat = res; 
}); 

どのくらいあなたがそのコードreuseに依存する必要があります。だから、私が細部を知るまでそれについてコメントしないだろう。言及コードの下に使用することにより

working demo

+0

に感謝Tanmayを追加...それは私のための仕事です。.. –

+0

嬉しいR.Sharma @私は助けることができた! :) – tanmay

1

工場から約束の代わりに。コントローラからそれをキャッチします。工場内でhttpを返すだけです。あなたの$http.getと内部.then最終的な修正変数をreturnする必要が

app.controller('myCtrl', function($scope, getMiqaat) { 
    $scope.date = "2017-04-11"; 
    getMiqaat.findMiqaat($scope.date) 
     .then(function(response) { 
      var all_miqaats = response.data.response; 
      var obj = all_miqaats.find(function(v) { 
       return v.miqaat_date == $scope.date 
      }); 
      if (obj == undefined || obj == "") { 
       console.log("obj = "); 
       console.log(obj); 
       obj.isHoliday = "100"; 
       $scope.miqaat = obj; 
      } else { 
       obj.mq_title = obj.title; 
       obj.isHoliday = "101"; 
       $scope.miqaat = obj; 
       console.log("Data from Service"); 
       console.log(obj); 
      } 
     }) 
     .catch(function(response) { 
      response.response = "Internal Server Error!"; 
     });; 
}); 
app.factory('getMiqaat', function($http) { 
    return { 
     findMiqaat: function(date) { 
      var dat = date; 
      console.log(dat); 
      return $http({ 
       url: 'miqaat.json', 
       method: 'GET', 
      }) 
     } 
    }; 
}) 

Demo

0

それが正常に働くことになります。あなたのjsonごとにキーが一致していることを確認してください。

コントローラコード:

var app = angular.module("myApp", []); 

app.controller('myCtrl', function($scope, getMiqaat){ 
    $scope.date = "2017-04-11"; 
    console.log("date ::"+$scope.date); 
    $scope.status; 
    $scope.miqaat; 
    getMiqaatData(); 
    function getMiqaatData() { 
     getMiqaat.findMiqaat($scope.date) 
      .then(function (response) { 
       $scope.miqaat = response.data.response[0]; 
      }, function (error) { 
       $scope.status = 'Unable to load data: ' + error.message; 
      }); 
    } 

}); 

app.service('getMiqaat', function($http){ 

      this.findMiqaat = function(date){ 
       var dat = date; 
       console.log(dat); 
       return $http({ 
        url: 'miqaat.json', 
        method: 'GET', 
       }); 
       } 

}) 

Json : 

{ 
    "status":true, 
    "message":"List of the miqaats", 
    "response":[ 
    {"miqaat_date":"2017-04-11", 
     "mq_title":" New Year", 
     "isHoliday" :"101" 
    }, 
    {"miqaat_date":"2017-04-09", 
     "mq_title":"Some Fest", 
     "isHoliday" :"101" 
    } 
    ] 
} 
関連する問題