Jak włączyć / wstrzyknąć funkcje, które używają $ scope do kontrolera w angularjs?
Próbuję włączyć do kontrolera bibliotekę funkcji przechowywanych w fabryce. Podobne do takich pytań:Tworzenie wspólnych funkcji kontrolera
Mójgłówny kontroler wygląda tak:
recipeApp.controller('recipeController', function ($scope, groceryInterface, ...){
$scope.groceryList = [];
// ...etc...
/* trying to retrieve the functions here */
$scope.groceryFunc = groceryInterface; // would call ng-click="groceryFunc.addToList()" in main view
/* Also tried this:
$scope.addToList = groceryInterface.addToList();
$scope.clearList = groceryInterface.clearList();
$scope.add = groceryInterface.add();
$scope.addUp = groceryInterface.addUp(); */
}
Następnie w innym pliku .js utworzyłem interfejs sklepu spożywczego. Wstrzyknąłem tę fabrykę do kontrolera powyżej.
Fabryka
recipeApp.factory('groceryInterface', function(){
var factory = {};
factory.addToList = function(recipe){
$scope.groceryList.push(recipe);
... etc....
}
factory.clearList = function() {
var last = $scope.prevIngredients.pop();
.... etc...
}
factory.add = function() {
$scope.ingredientsList[0].amount = $scope.ingredientsList[0].amount + 5;
}
factory.addUp = function(){
etc...
}
return factory;
});
Ale w mojej konsoli ciągle dostajęReferenceError: $scope is not defined at Object.factory.addToList
itd. Oczywiście zgaduję, że ma to związek z faktem, że używam$scope
w moich funkcjach w fabryce. Jak to rozwiązać? Zauważam, że w wielu innych przykładach, na które patrzyłem, nikt nigdy nie korzysta$scope
w ramach ich zewnętrznych funkcji fabrycznych. Próbowałem wstrzykiwać$scope
jako parametr w mojej fabryce, ale to nie działało. (na przykład.recipeApp.factory('groceryInterface', function(){
)
Każda pomoc jest naprawdę doceniana!