[英]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呼叫
任何想法?
簡短的答案是,甚至不要嘗試在控制器之間進行通信,而要使用一種通信模式
$emit()
, $on()
和$broadcast()
如評論中所述,這些選項按最佳實踐的順序排列。
當您想在控制器中共享代碼時建立工廠或服務
這是獲取要共享的所有函數和變量的最佳方法,例如
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.