工場に保持されている関数のライブラリをコントローラーに含めようとしています。次のような質問に似ています: 一般的なコントローラー関数の作成
私のメインコントローラーは次のようになります。
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(); */
}
次に、別の .js ファイルで、工場のgroceryInterface を作成しました。このファクトリを上記のコントローラーに注入しました。
工場
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;
});
しかし、私のコンソールではReferenceError: $scope is not defined
at Object.factory.addToList
、など$scope
を取得し続けています。明らかに、これは、工場内の関数で使用しているという事実に関係していると思います。これを解決するにはどうすればよいですか? 私が見た他の多くの例では、誰も$scope
外部ファクトリ関数内で使用していないことに気付きました。$scope
工場でパラメータとして注入しようとしましたが、うまくいきませんでした。(例recipeApp.factory('groceryInterface', function(){
)
どんな助けでも本当に感謝しています!