2016-05-01 7 views
1

PouchDbサービスをAngular/Ionicで設定してサービス内で正常に動作しますが、PouchDBサービスから取得したデータをコントローラに渡そうとすると失敗します。PouchDBサービスからAngluarJSのコントローラにデータを渡す

は、これが私のサービス

angular.module('myApp', []) 
.service('DBService', function($q) { 
    var items; 
    var db; 
    var self = this; 
    this.initDB = function() { 
    return db = new PouchDB('simpleDB', { 
     adapter: 'websql' 
    }); 
    }; 
this.storeData = function() { 
    return $q.when(
       db.put({ 
      _id: 'mydoc', 
      title: 'some text' 
     }).then(function (response) { 
      // handle response 
      console.log('done') 
     }).catch(function (err) { 
      console.log(err); 
     }) 
    ) 
    }; 
this.getData = function(){ 
    return $q.when(
    db.get('mydoc').then(function (doc) { 
    // handle doc 
    console.log(doc); // I see the data in console 
    }).catch(function (err) { 
    console.log(err); 
    }) 
) 
} 
}) 

であると私は()私は、エラーTypeError例外を取得し、次に使用する場合、これは、コントローラ

angular.module('myApp', []) 
.controller('mainCtrl', function($scope, DBService, $q) { 
    $scope.getData = function(){ 
     DBService.initDB() 
     DBService.getData().then(function(data){ 
     console.log(data) 
     }) 
    } 

です:未定義の「を」プロパティを読み取ることができません。

サービスからコントローラにデータを正しく渡す方法を教えてもらえますか?

答えて

0

私はこのエラーをすばやく見つけることができました!偶然、私はこのの2行目から(リターンの$ q.whenを省略していたことだった私は私のサービスにデータを返すされませんでしたので、私は

this.getData = function(){ 
    return $q.when(
    db.get('mydoc').then(function (doc) { 
    // handle doc 
    return doc; // I added this 
    console.log(doc); // I see the data in console 
    }).catch(function (err) { 
    console.log(err); 
    }) 
) 
} 

にそれを変更して、その理由は、()undefinedを返します.getData関数!今度は私の必要なデータをコントローラに持っています。

関連する問題