簡體   English   中英

如何從另一個控制器調用一個控制器功能?

[英]How to call a controller function from another controller?

從另一個控制器調用一個控制器功能的最簡單方法是什么?

我有這樣的控制器。

控制器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);
            }
            );
        };
    };

我只想從其他控制器調用函數

簡單的邏輯是,如果從控制器1的功能,則另一個功能是從控制器2呼叫

任何想法?

簡短的答案是,甚至不要嘗試在控制器之間進行通信,而要使用一種通信模式

  1. 使用共享服務( PREFERRED )。
  2. 使用事件$emit()$on()$broadcast()
  3. 使用范圍繼承。

如評論中所述,這些選項按最佳實踐的順序排列。

當您想在控制器中共享代碼時建立工廠服務

這是獲取要共享的所有函數和變量的最佳方法,例如

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;

    }
};

});

現在在控制器1中使用

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

 };

現在在Controller 2中使用

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

我在這里分享您可以實現的邏輯,如果要在angular doc中進行更多搜索,這將有所幫助

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM