从另一个控制器调用控制器函数的最简单方法是什么?
我有这样的控制器..
控制器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
调用任何想法?
答案 0 :(得分:3)
简短的回答是,甚至不尝试在控制器之间进行通信,而是使用其中一种通信模式
$emit()
,$on()
和$broadcast()
如评论中所述,这些选项按照最佳做法的顺序排列。
答案 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中进行更多搜索会有所帮助
谢谢