18 Stimmen

AngularJS Fabrikparameter

Ich versuche, einen Parameter an einen AngularJS-Service zu senden. Hier ist mein Service-Code :

angular.module('skyBiometryServices', ['ngResource'])
.factory('Facedetect', function( $resource ) {
    return $resource('skyBiometry/facedetect', {}, {
        query: {
            method : 'GET',
            params : {imageUrl: "http://cdn1-public.ladmedia.fr/var/public/storage/images/dossiers/presidentielles-2012/les-news-sur-les-presidentielles-2012/exclu-public-cauet-pour-ces-presidentielles-personne-ne-me-fait-rever-209063/2064021-1-fre-FR/Exclu-Public-Cauet-Pour-ces-presidentielles-personne-ne-me-fait-rever-!_portrait_w674.jpg"},
            isArray: false
        }
    })
});

In meinem Controller habe ich das :

function IndexCtrl($scope,Facedetect) {
    $scope.text = Facedetect.query();
}

Wie kann ich die Bild-URL von meinem Controller aus an meine Services senden? Etwas wie das hier

function IndexCtrl($scope,Facedetect) {
    $scope.text = Facedetect.query('MEINE BILD-URL');
}

Im Voraus vielen Dank.

23voto

MhdAljuboori Punkte 475

Sie können Ihre Factory so schreiben

app.factory('Facedetect',function($resource) {

  return {

    query: function(image_url) {
      return $resource('skyBiometry/facedetect', {}, {
             query: { method: 'GET', params: {imageUrl:image_url}, isArray: false }
      }).query();

    }
  }
});

Jetzt können Sie in Ihrem Controller schreiben

function IndexCtrl($scope, Facedetect) {
  $scope.text = Facedetect.query("IHRE/BILD/URL");
}

14voto

Wottensprels Punkte 3297

Wenn ich das richtig verstehe, möchtest du so etwas:

app.factory('myFactory',function(){

  return{

    prop: '',

    setProp: function(newProp){

        this.prop = newprop;

    }
  }

});

Du solltest dies ansehen:

https://egghead.io/lessons/angularjs-providers

Und dies lesen:

AngularJS: Service vs provider vs factory

0voto

mcbjam Punkte 7228

Mit weiteren Recherchen habe ich eine Lösung gefunden:

factory('Facedetect', function( $resource ) {
    return $resource('skyBiometry/facedetect', {}, {
        query: {
            method : 'GET',
            params : {imageUrl: "http://cdn1-public.ladmedia.fr/var/public/storage/images/dossiers/presidentielles-2012/les-news-sur-les-presidentielles-2012/exclu-public-cauet-pour-ces-presidentielles-personne-ne-me-fait-rever-209063/2064021-1-fre-FR/Exclu-Public-Cauet-Pour-ces-presidentielles-personne-ne-me-fait-rever-!_portrait_w674.jpg"},
            isArray: false
        }
    })
});

function IndexCtrl( $scope, $routeParams, Facedetect ) {
    $scope.imageurl = 'http://flepi.net/images/personne-tendue.jpg';
    $scope.text = $scope.text = Facedetect.get({imageUrl: $scope.imageurl});
}

Ich weiß nicht, ob es der beste Weg ist, aber es funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X