如何从另一个控制器调用控制器功能?

时间:2014-08-01 12:40:53

标签: javascript angularjs

从另一个控制器调用控制器函数的最简单方法是什么?

我有这样的控制器..

控制器1

$scope.setTitleKey = function (titleKey) {
        $scope.currentTitleKey = titleKey;
        $scope.getDetails();
    };

控制器2

$scope.getDetails=  function () {
        if (titleKey !== "All") {
            $scope.bookInfo;
            bookDetails.getBookDetails(titleKey).then(function (results) {
                $scope.bookInfo = results.data;
            }, function (error) {
                alert(error.data.message);
            }
            );
        };
    };

我只想从其他控制器调用函数

简单的逻辑是,如果来自 Controller1 的功能,则另一个功能是从 Controller2

调用

任何想法?

2 个答案:

答案 0 :(得分:3)

简短的回答是,甚至不尝试在控制器之间进行通信,而是使用其中一种通信模式

  1. 使用共享服务(首选)。
  2. 使用活动$emit()$on()$broadcast()
  3. 使用范围继承。
  4. 如评论中所述,这些选项按照最佳做法的顺序排列。

答案 1 :(得分:1)

如果您想在控制器中共享代码,请

制作工厂服务

这是获得您想要分享的所有功能和变量的最佳方式,如

Modulename.factory("ABC",function(){// Modulename which you have make on your code it is just for a example
var test=0;
return {
    /** by this get test var**/
    "getABC":function(){

        return test;
    },

   /**to set new new test value 
    * **/
    "setABC":function(passtest){
        test=passtest;

    }
};

});

现在使用 Controller 1

$scope.setTitleKey = function (titleKey,ABC) {
  ABC.getABC();//get 0;
  ABC.setABC(5);

 };

现在使用 Controller 2

$scope.getDetails=  function () {
       ABC.getABC();// get 5
    };

在这里,我分享了一个你可以实现的逻辑,并且在angular doc中进行更多搜索会有所帮助

谢谢