62
задан 27 August 2015 в 04:31

2 ответа

Лично я хотел бы использовать объем от фабрики, таким образом, вместо того, чтобы выгнать все с квартиры я передам объем как параметр от клиента, который звонит в factory.function ().

Также у меня была эта та же проблема при попытке использовать $scope.watch (...), так как мы не можем использовать непосредственно $scope от фабрик или сервисов, но я хотел иметь эту работу таким образом, так, чтобы был то, почему я просто обновил свою функцию, чтобы иметь объем как параметр и позволить клиенту фабрики для отправки $scope. Так, это было бы моим решением:

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

app.factory('MyFactory', function($http) {

      var factory = {};
      //This is only for my own issue I faced.
      factory.Images = {};

      factory.myFunction = function(id, scope) {
        //This is an example of how we would use scope inside a factory definition
        scope.details = "Initial Value";
        //In my case I was having this issue while using watch
        scope.$watch('details' , function(newValue, oldValue) {
          if(oldValue){
             scope.log = "Details was updated to : " +newValue;
            }
        });
        
        scope.details = "My Id is: "+id;
       };
        return factory;
});

//Controller: Factory's Client.
app.controller("MyController", ['$scope', 'MyFactory', function($scope, MyFactory) {
  
        MyFactory.myFunction(5, $scope);
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="MyController">
  <span>{{details}} </span>
  <hr>
  <p>{{log}} </p>
</div>

я надеюсь, что это может помочь. Отношения.

4
ответ дан 31 October 2019 в 14:06

Я знаю, что этот вопрос стар, но это - то, что работало на меня

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

    let toRet = {
        foo: foo
    }

    return toRet;

    function foo(){ // This function needs to use passed scope.
        let $scope = toRet.$scope;
        // Do stuff with $scope.
    }
});

app.controller('myController',function($scope,myFactory){

    myFactory.$scope = $scope;
    /*
        We could just pass $scope as a parameter to foo, but this is
        for cases where for whatever reason, you cannot do this.
    */
    myFactory.foo();

});
0
ответ дан 31 October 2019 в 14:06

Другие вопросы по тегам:

Похожие вопросы: