调用AngularJS中另一个模块中控制器中的函数

Call a function in a controller in another module in AngularJS

本文关键字:函数 控制器 另一个 AngularJS 调用 模块      更新时间:2023-09-26

我在调用另一个模块中的另一个控制器中的函数时遇到问题。我不知道这是否可能,但这就是我现在所拥有的:

angular.module('search.controllers', ['socket.services', 'recipe.controllers'])
    .controller('SearchCtrl', ['$scope', '$state', 'socketService', 'recipeCtrl', 
        function($scope, $state, socketService, recipeCtrl) {
            recipeCtrl.setRecipe({});
        }
]);
angular.module('recipe.controllers', [])
    .controller('recipeCtrl', 
        function($scope) {
            this.onRecipeSelect = function(recipe) {
                console.log(JSON.stringify(recipe));
            }
        }
    );

这给了我一个错误:

Unknown provider: recipeCtrlProvider <- recipeCtrl <- SearchCtrl

有人知道如何完成我想要做的事情吗?

控制器无法注入,因此它简单地不起作用。您需要使用您的函数创建一个服务并注入此服务。

如果您需要在控制器之间交换数据,最好的选择是使用事件,但您的控制器需要嵌套,以便通过作用域进行通信。

最后一个资源应该使用rootScope并监视值,但不建议这样做