2017-03-02 4 views
0

Ich möchte den Wert der Benutzer in. Controller aus. Service, wie kann ich das tun? Kann jemand helfen?Wie bekomme ich den Wert von. Service in. Controller

app.controller("myCtrl", function($scope, $http, $pouchDB) { 
    $pouchDB.setDatabase("infoDB"); 
    $pouchDB.allDocs(); 
} 

app.service("$pouchDB", ["$rootScope", "$q", function($rootScope, $q) { 
    this.allDocs = function(docs){ 
    database.allDocs({ 
     include_docs: true 
    }) 
    .then (function(result){ 
     for (var i = 0; i < result.rows.length; i++){ 
      var users = result.rows[i].doc; 
     } 
    }); 
    } 
} 

Antwort

1

Hier ist ein Beispiel für die setDatabase Funktion in einem pounchDB Dienst rufen:

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

 
app.controller('myCtrl', function($scope, pouchDB) { 
 
    var result = pouchDB.setDatabase("infoDB"); 
 
    console.log(result); 
 
}); 
 

 
app.service('pouchDB', function() { 
 
    this.setDatabase= function(db){ 
 
    return db + " was called."; 
 
    } 
 
});
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.js"></script> 
 

 
<div ng-app="app"> 
 
    <div ng-controller="myCtrl"> 
 
    </div> 
 
</div>

Dann in Ihrer allDocs Funktion benötigen Sie einen Benutzer Array zurückzukehren und nicht wieder- halten Zuordnung in der Schleife:

.then (function(result){ 
    var users = []; 
    for (var i = 0; i < result.rows.length; i++){ 
     users.push(result.rows[i].doc); 
    } 
    return users; 
}); 

Mit anderen Worten, Sie vermissen die setDatabase() Funktion; in Ihrer allDocs() Funktion benötigen Sie ein return users Array von Ergebnissen; und in Ihrem Controller müssen Sie den Wert erhalten: $scope.result = $pouchDB.allDocs();

1

Von den Diensten müssen Sie Promise-Objekt zurückgeben, das später basierend auf der Netzwerkantwort auflösen oder zurückweisen wird. Sie müssen den Resolve-Handler und den Reject-Handler hinzufügen, um die Async-Response-Antwort zu kennen.

Ein simuliertes Arbeits plunker

app.controller("myCtrl", function($scope, $http, $pouchDB) { 
    $pouchDB.setDatabase("infoDB"); 
    //resolve handler and reject handler to thenable object 
    $pouchDB.allDocs().then(function(result) { 
    $scope.users = []; 
    for (var i = 0; i < result.rows.length; i++) { 
     $scope.users.push(result.rows[i].doc); 
    } 
    }, 
    function(err){console.log('error')} 
); 
}); 

app.service("$pouchDB", ["$rootScope", "$q", function($rootScope, $q) { 
    this.allDocs = function(docs) { 
    return database.allDocs({ 
     include_docs: true 
    }); //return promise 
    } 
}]); 
Verwandte Themen