Лично я хотел бы использовать объем от фабрики, таким образом, вместо того, чтобы выгнать все с квартиры я передам объем как параметр от клиента, который звонит в 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>
я надеюсь, что это может помочь. Отношения.
Я знаю, что этот вопрос стар, но это - то, что работало на меня
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();
});