我正在尝试将工厂中保存的函数库包含到控制器中。类似于这样的问题: 创建通用控制器功能
我的主控制器如下所示:
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(){
)
任何帮助都非常感谢!